一、QDialog类
1、对话框的概念
对话框在各种软件中都会使用到,一般用来给用户提示信息或者接收用户反馈的信息,因此对话框是应用程序和用户交互的平台。
对话框是一个顶层窗口,不能嵌入到其他窗口中。
2、对话框的种类
1)、模式对话框,该应用程序的其他窗口不能被访问,必须等待当前对话框消失,显示模式对话框一般调用它的exec()函数
2)、非模式对话框,该应用程序的其他窗口还能继续被访问,显示非模式对话框一般调用它的show()函数
3、QDialog类的父类是QWidget
二、QDialog的派生类
为了方便开发人员的使用,Qt对一些特殊功能的对话框做了封装,提供一套标准的对话框。这些内建对话框提供静态函数便于使用,通常都是调用系统本地的对话框
1、QFileDialog
使用方法:
1、打开文件对话框,返回选择的文件名
QString str = QFileDialog::getOpenFileName(
父窗口,
对话框名字,
默认选择路径,
文件过滤器);
2、根据名字打开文件,成功返回true,失败返回false
QFile file(str);
file.open(QIODevice::ReadWrite);
3、得到一个输入流
QTextStream in(&file);
4、逐行读出输入流
in.readLine();
2、QColorDialog
使用方法:
1、获取调色板
QPalette palette = textEdit->palette();
2、打开颜色对话框,获取颜色
QColor color = QColorDialog::getColor(
palette.color(QPalette::Text), //对话框初始颜色
this //父窗口
);
3、设置调色板颜色
palette->setColor(
QPalette::Text, //要设置的调色板的部位
color //要设置的颜色
);
4、加载调色板
textEdit->setPalette(palette);
GUI为不同的部位分别设置了颜色标志
3、QFontDialog
使用方法:
1、打开字体对话框,获取字体
bool ok;
QFont font = QFontDialog::getFont(&ok);
如果点击对话框的“确定”按钮,那么ok的值就会变为true;如果点击对话框的“取消”按钮,那么ok的值就会变为false
2、设置字体
textEdit->setFont(font);
4、QInputDialog
使用方法:
打开输入对话框,输入的内容会返回
QString str = QInputDialog::getText(
this, //父窗口
“inputDialog”, //窗口标题
“please input”, //输入框上面的标签文字
QLineEdit::Normal, //编辑框的显示方式
QDir::home(), //编辑框默认的内容
ok //回填bool变量
)
5、QProgressDialog
QProgress::setRange(0,100) //设置进度条范围
QProgress::setValue(50) //设置进度条当前值
三、QMessageBox
Qt提供了几种显示信息的消息框,这些消息框都是模态对话框,平时在软件里面会经常用到
1、QMessageBox::question
一个具有标题和文本的消息询问框,开发人员可以根据具体需要定制按钮的个数和按钮的作用
2、QMessageBox::informat
一个具有标题和提示文本的提示消息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用
3、QMessageBox::warning
一个具有标题和文本信息的警示消息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用
4、QMessageBox::critical
一个具有标题和文本信息的致命信息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用
5、QMessageBox::about
一个具有标题和文本的消息框
6、QMessageBox::aboutQt
显示关于Qt的消息框
7、消息按钮的制订
四、QDialog实例
1、头文件
-
#ifndef BUILDINDIALOG_H
-
#define BUILDINDIALOG_H
-
-
#include <QtGui>
-
-
class buildInDialog : public QDialog
-
{
-
Q_OBJECT
-
public:
-
buildInDialog();
-
private:
-
QPushButton *fileBtn;
-
QPushButton *colorBtn;
-
QPushButton *fontBtn;
-
QPushButton *saveBtn;
-
QPushButton *closeBtn;
-
-
QTextEdit *textEdit;
-
private slots:
-
void fileSlot();
-
void colorSlot();
-
void fontSlot();
-
void saveSlot();
-
void closeSlot();
-
-
};
-
-
-
-
#endif
2、实现文件
-
#include "buildInDialog.h"
-
-
buildInDialog::buildInDialog()
-
{
-
fileBtn = new QPushButton("open");
-
colorBtn = new QPushButton("color");
-
fontBtn = new QPushButton("font");
-
saveBtn = new QPushButton("save");
-
closeBtn = new QPushButton("close");
-
-
textEdit = new QTextEdit();
-
-
-
//布局
-
QVBoxLayout *vLay = new QVBoxLayout();
-
QHBoxLayout *hLay = new QHBoxLayout();
-
vLay->addWidget(fileBtn);
-
vLay->addWidget(colorBtn);
-
vLay->addWidget(fontBtn);
-
vLay->addWidget(saveBtn);
-
vLay->addWidget(closeBtn);
-
-
hLay->addWidget(textEdit);
-
hLay->addLayout(vLay);
-
-
setLayout(hLay);
-
-
connect(fileBtn, SIGNAL(clicked()), this, SLOT(fileSlot()));
-
connect(colorBtn, SIGNAL(clicked()), this, SLOT(colorSlot()));
-
connect(fontBtn, SIGNAL(clicked()), this, SLOT(fontSlot()));
-
connect(saveBtn, SIGNAL(clicked()), this, SLOT(saveSlot()));
-
connect(closeBtn, SIGNAL(clicked()), this, SLOT(closeSlot()));
-
}
-
-
void buildInDialog::fileSlot()
-
{
-
//获取文件名字
-
QString str = QFileDialog::getOpenFileName(this, "打开文件", "/", "All File(*.*)");
-
-
//打开文件
-
QFile file(str);
-
if(!file.open(QIODevice::ReadWrite))
-
return;
-
//得到输入流
-
QTextStream in(&file);
-
//读取数据
-
while(!in.atEnd())
-
{
-
QString st = in.readLine();
-
textEdit->append(st);
-
}
-
}
-
-
void buildInDialog::colorSlot()
-
{
-
//获取条色板
-
QPalette palette = textEdit->palette();
-
//打开对话框,获取颜色
-
QColor color = QColorDialog::getColor(palette.color(QPalette::Text), this);
-
-
if(color.isValid())
-
{
-
//将颜色放到条色板
-
palette.setColor(QPalette::Window, color);
-
//加载调色板
-
textEdit->setPalette(palette);
-
}
-
-
}
-
-
void buildInDialog::fontSlot()
-
{
-
bool ok;
-
QFont font = QFontDialog::getFont(&ok);
-
if(ok)
-
textEdit->setFont(font);
-
}
-
-
void buildInDialog::saveSlot()
-
{
-
bool ok;
-
//获取输入的信息
-
QString str = QInputDialog::getText(this, "输入对话框", "请输入名字", QLineEdit::Normal, "wj", &ok);
-
-
//根据输入的名字打开文件
-
QFile file(str);
-
file.open(QIODevice::WriteOnly);
-
//获取输出流
-
QTextStream out(&file);
-
//将textEdit的内容写入到out
-
out<<textEdit->toPlainText()<<"\n";
-
}
-
-
void buildInDialog::closeSlot()
-
{
-
QProgressDialog *progress = new QProgressDialog();
-
progress->setRange(0, 100);
-
for(int i=0; i<=100; i+=10)
-
{
-
qApp->processEvents();
-
progress->setValue(i);
-
sleep(1);
-
}
-
}
3、主函数
-
#include "buildInDialog.h"
-
#include <QApplication>
-
-
int main(int argc, char *argv[])
-
{
-
//设置编码,防止汉字出现乱码
-
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
-
QApplication app(argc, argv);
-
-
buildInDialog dialog;
-
dialog.show();
-
-
return app.exec();
-
}
阅读(9762) | 评论(0) | 转发(0) |