QtDialog在创建时默认为非模态(modal属性为false),可以通过setModal()函数设置对话框为模态还是非模态。
窗口是否是模态和非模态和窗口(包括QDialog和QWidget等)的exec()和show()等函数无直接关系,只和窗口的阻塞方式有关。
setWindowModality()函数是用来设置QWidget运行时的窗口阻塞方式,可以实现窗口是模态还是非模态。
参数类型 | 含义 |
---|---|
Qt::NonModal | 窗口不是模态,并且不阻塞其它任何窗口 |
Qt::WindowModal | 窗口是模态对于单个的窗口层次,并且阻塞其所有祖先窗口(包括其父窗口、父窗口的兄弟窗口以及父窗口和父窗口的兄弟窗口的祖先窗口) |
Qt::ApplicationModal | 窗口是模态对于这个应用程序,并且阻塞应用程序内的其它所有窗口 |
窗口初始化时,与窗口模态和非模态状态有关的三个变量的默认值:
变量 默认值 isModal false WA_ShowModal false WindowModality NonModal isModal()函数返回的值是窗口的window_modality值。
将窗口设置为模态:setModal(true); // 对话框特有