Qt模态和非模态对话框简述
QDialog
类是所有对话框窗口的基类。按照运行对话框是否可以和此程序 的其他界面进行交互,分为两类:模态、非模态
非模态
QDialog *dialog = new QDialog(this);
dialog->show();
模态
- 使用
exec()
显示的对话框,此种方式放到main()
函数中则直接显示窗口,如果放到其他窗口的构造函数中则其他窗口不显示,只显示此dialog
。
QDialog dialog(this);
dialog.exec();
- 设置
setModal(true)
,此种方式如果放到其他窗口的构造函数中,则原窗口照样显示,只是此dialog
前置显示,且无法点击原窗口。
QDialog *dialog = new QDialog(this);
dialog->setModal(true);
dialog->show();
与 setModal()
函数类似,setWindowModality()
函数也可以设置模态,其参数有三种选择
Qt::NonModal
:不阻塞任何窗口,就是非模态Qt::WindowModal
:阻塞它的父窗口、所有祖先窗口以及它们的子窗口Qt::ApplicationModal
:阻塞整个应用程序的所有窗口
注:setMOdal()
函数默认设置的是Qt::ApplicationModal