对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。在使用前,需要加入头文件
模态对话框:
/* 新加一个对话框对象 */
QDialog dig;
/* 程序阻塞在此 */
dig.exec();
非模态对话框:
QDialog* dig = new QDialog(this);
/* 设置对话框的属性为:关闭即释放内存 */
dig ->setAttribute(Qt::WA_DeleteOnClose);
/* 需要人为的显示 */
dig ->show();
所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发。Qt 的内置对话框大致分为以下几类:
注意在使用这些标准对话框时候,需要加入相应的头文件。
下面以消息对话框及文件对话框做进一步的详细介绍:
1、消息对话框(QMessageBox)
(1)显示关于对话框:
void about(QWidget * parent, const QString & title, const QString & text);
/*
这是一个最简单的对话框,其标题是 title,内容是 text,父窗口是 parent。对话框只有一个 OK 按钮。
*/
(2)显示关于 Qt 对话框。该对话框用于显示有关 Qt 的信息。
void aboutQt(QWidget * parent, const QString & title = QString()):
(3)显示严重错误对话框
StandardButton critical(QWidget * parent, const QString & title, const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton):
/*
这个对话框将显示一个红色的错误符号。我们可以通过 buttons 参数指明其显示的按钮。默认情况下只有一个 Ok 按钮,我们可以使用StandardButtons类型指定多种按钮。
*/
(4)显示普通提示信息对话框
StandardButton information(QWidget * parent, const QString & title, const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
/*
这个对话框提供一个普通信息图标。
*/
(5)显示问号对话框
StandardButton question(QWidget * parent,const QString & title, const QString & text,
StandardButtons buttons = StandardButtons( Yes | No ),
StandardButton defaultButton = NoButton) ;
/*
这个对话框提供一个问号图标,并且其显示的按钮是“是”和“否”
*/
(6)显示感叹号对话框
StandardButton warning(QWidget * parent, const QString & title, const QString & text,
StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
/*
这个对话框提供一个黄色叹号图标。
*/
2、文件对话框(QFileDialog)
文件对话框这里只需要注意一个函数即可:
//Qt的标准对话框提供静态函数,用于返回一个模态对话框,该函数作用为获取打开的文件的路径
QString QFileDialog::getOpenFileName(QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0);
//该函数作用为获取保存文件的路径字符串
QString QFileDialog::getSaveFileName(QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0);
/*
parent:父窗口
caption:对话框标题
dir:对话框打开时的默认目录
filter:文件过滤器,过滤器就是用于过滤特定的后缀名,如果需要多个过滤器,使用“;;”分割,例如:“JPEG Files(*.jpg);;PNG Files(*.png)”
selectedFilter:默认选择的过滤器
options:对话框的一些参数设定,它的取值是enum QFileDialog::Option
*/