一、对话框分类
模态(modal):指该对话框窗口会阻塞其他窗口。
非模态(modeless):指该对话框窗口不阻塞任何其他窗口。
二、模态的种类
模态的种类由枚举类型enum Qt::WindowModality来定义,分为
Qt::NonModal:非模态,即不阻塞任何其他窗口;
Qt::WindowModal:窗口模态,即阻塞其父窗口和祖父窗口,以及其父窗口和祖父窗口的所有同级窗口;
Qt::ApplicationModal:应用模态,即阻塞应用程序的所有窗口。
三、模态设置函数
void QDialog::setModal(bool modal)
void QWidget::setWindowModality(Qt::WindowModality windowModality)
(注:QDialog::setModal(true)与QWidget::setWindowModality(Qt::ApplicationModal)等价。)
四、窗口的实例应用
1、对象
QDialog dialog(this);
// 1、窗口将会一闪而过,因为函数中创建的对象,在函数结束后,就会释放消失。
dialog.show();
// 2、模态对话框窗口,程序将会一直在此处运行,直到对话框关闭。
dialog.exec();
2、对象指针
QDialog *dialog = new QDialog(this);
// 1、非模态对话框
dialog->show();
// 2、模态对话框窗口,程序将会一直在此处运行,直到对话框关闭。
dialog->exec();
// 3、模态对话框窗口,程序会继续向下执行。
dialog->setModal(true);
dialog->show();
// 4、模态对话框窗口,程序会继续向下执行。
dialog->setWindowModality(Qt::ApplicationModal);
dialog->show();