目录
1.基本概念
Qt 中使用QDialog类实现对话框。就像主窗口一样,我们通常会设计一个类继承QDialog。QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框(此时,其默认出现的位置是 parent 的中心)。顶层窗口与非顶层窗口的区别在于,顶层窗口在任务栏会有自己的位置,而非顶层窗口则会共享其父组件的位置。
2.对话框分为模态对话框和非模态对话框。
-
模态对话框,就是会阻塞同一应用程序中其它窗口的输入。
模态对话框很常见,比如“打开文件”功能。你可以尝试一下记事本的打开文件,当打开文件对话框出现时,我们是不能对除此对话框之外的窗口部分进行操作的。
-
与此相反的是非模态对话框,例如查找对话框,我们可以在显示着查找对话框的同时,继续对记事本的内容进行编辑。
(1)模态对话框
(2)非模态对话框
3.消息对话框
消息对话框:包含四个公有成员函数,实现消息功能(错误、信息、问题、警告)
include < QMessageBox >
(1)错误对话框
示例代码:
参数1:父亲;参数2:对话框标题;参数3:提示信息:
#include < QMessageBox >
QMessageBox::critical(this,“critical”,“错误”);
(2)信息对话框
示例代码:
参数1:父亲;参数2:对话框标题;参数3:提示信息:
#include < QMessageBox >
QMessageBox::information(this,“info”,“信息”);
(3)问题对话框
示例代码:
参数1:父亲;参数2:对话框标题;参数3:提示信息;参数4:两个选项;参数5:默认关联回车选项
#include < QMessageBox >
//QMessageBox::question(this,“ques”,“提问”);
QMessageBox::question(this,“ques”,“提问”,QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);
返回值为StandButton类型,可以通过返回值判断用户输入
(4)警告对话框
示例代码:
参数1:父亲;参数2:对话框标题;参数3:提示信息;
#include < QMessageBox >
QMessageBox::warning(this,“warning”,“警告”);
4.标准对话框
所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。事实上,有很多对话框都是通用的,比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。
-
QColorDialog: 选择颜色;
-
QFileDialog: 选择文件或者目录;
-
QFontDialog: 选择字体;
-
QInputDialog: 允许用户输入一个值,并将其值返回;
-
QMessageBox: 模态对话框,用于显示信息、询问问题等;
-
QPageSetupDialog: 为打印机提供纸张相关的选项;
-
QPrintDialog: 打印机配置;
-
QPrintPreviewDialog:打印预览;
-
QProgressDialog: 显示操作过程。
(1)颜色对话框
示例代码:
#include <QColorDialog>
QColor color=QColorDialog::getColor(QColor(255,0,0));
(2)文件对话框
示例代码:
参数1:父亲;参数2:对话框标题;参数3:文件路径;参数4:过滤条件。返回值为选取的路径
#include < QFileDialog >
QString strf=QFileDialog::getOpenFileName(this,“打开文件”,“D:\data”,"(*.rar)");
(3)字体对话框
示例代码:
#include <QFontDialog>
QFont gf=QFontDialog::getFont(&flag,QFont(“华文仿宋”,36));
5.自定义消息框
Qt 支持模态对话框和非模态对话框。
模态与非模态的实现:
-
使用QDialog::exec()实现应用程序级别的模态对话框
-
使用QDialog::open()实现窗口级别的模态对话框
-
使用QDialog::show()实现非模态对话框。