一、对话框简介
对话框是与用户进行简短交互的顶层窗口
QDialog是QT中所有对话框窗口的基类,QDialog继承于QWidget,是一种容器型的组件,是定制了窗口样式的特殊QWidget。
QDialog作为一种专用的交互窗口,不能作为子部件嵌入其他容器中。
二、对话框类型
对话框类型分为模态对话框和非模态对话框。
1、模态对话框
模态对话框显示后无法与父窗口进行交互,是一种阻塞式的对话框,使用QDialog::exec()函数调用。
模态对话框一般在栈上创建。
QDialog dialog(this);
dialog.exec();
模态对话框适用于必须依赖用户选择的场合,比如消息显示,文件选择,打印设置等。
2、非模态对话框
非模态对话框显示后独立存在,可以同时与父窗口进行交互,是一种非阻塞式对话框,使用QDialog::show()函数调用。
非模态对话框一般在堆上创建,需要指定Qt:WA_DeleteOnClose属性,避免内存泄漏。
非模态对话框适用于特殊功能设置的场合,比如查找操作,属性设置等。
QDialog* dialog = new QDialog(this);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->show();
3、混合属性对话框
混合属性对话框同时具有模态对话框和非模态对话框的属性,对话框的生成和销毁具有非模态对话框属性,功能上具有模态对话框的属性。
使用QDialog::setModal()函数可以创建混合特性的对话框。通常,创建对话框都需要指定对话框的父组件。
QDialog* dialog = new QDialog(this);
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setModal(true);
dialog->show();
三、对话框的返回值
只有模态对话框采用返回值,模态对话框的返回值用于表示交互结果。
QDialog::exec()函数的返回值作为交互结果。
void QDialog::done(int i)函数关闭对话框,并将参数作为交互结果。
QDialog::Accepted表示用户操作成功
QDialog::Rejected表示用户操作失败
四、标准对话框
1、标准对话框的类型
QT为开发者提供了多种可复用的对话框类型,即QT标准对话框。QT标准对话框全部继承于QDialog类。常用标准对话框类型如下: