Qt基础 |
您所在的位置:网站首页 › 什么是非模态对话框 › Qt基础 |
Qt基础-模态与非模态窗口
模态与非模态的区别模态窗口的实现方法QDialog对话框QWidget和QMainWindow窗口
设置置顶非模态窗口
在Qt中,QDialog是所有对话框窗口类的基类,不只是对话框有模态与非模态区分,QWidget和QMainWindow窗口也可以设为模态,因此文章不称模态/非模态对话框,而叫做模态/非模态窗口。
模态与非模态的区别
模态(modal)窗口:窗口弹出后,没关闭之前,不可以对同一应用程序的其他窗口进行操作; 非模态(modeless)窗口:窗口弹出后,没关闭之前,可以对同一应用程序的其他窗口进行操作,可以同时和多个窗口进行交互; 模态窗口的实现方法窗口的show()函数显示的类型是非模态的,有几种方法可以将窗口设为模态,如下: QDialog对话框 方法1:exec() QDialog dlg(this); dlg.exec();– 说明:exec是execute(执行)的缩写,当调用exec()函数时,并不会立即返回,只用当对话框关闭才会返回,因此,只有关闭对话框才会执行后续的代码。 方法2:setModal() QDialog dlg(this); dlg.setModal(true); //相当于dlg.setWindowModality(Qt::ApplicationModal); dlg.show(); 说明:设置完模态之后,会执行后续的代码,并不会阻塞。 方法3:setWindowModality() QDialog dlg(this); dlg.setWindowModality(Qt::ApplicationModal); dlg.show(); 说明:setWindowModality()的参数设置要阻塞的窗口类型: 枚举值值说明Qt::NonModal0非模态,不阻塞任何窗口Qt::WindowModal1模态,阻塞它的父窗口、所有的祖先窗口以及他们的子窗口Qt::NonModal2模态,阻塞应用程序所有的窗口 QWidget和QMainWindow窗口这两种窗口的模态实现只有上述QDialog中的方法3,即setWindowModality(),不再赘述。 设置置顶非模态窗口有子窗口和父窗口,要实现子窗口置顶,但是可以对父窗口进行操作,可以在父窗口中进行设置: subDlg->setParent(this,Qt::Window); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |