3. Qt中窗体show()和exec()的异同

一、Qt中的窗体有两种状态:模态(Modal Dialog)和非模态(Modeless Dialog)
1.模态窗体:在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。
2.非模态窗体:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗***互。

二、模态和非模态窗体的显示
1.使用exec()方法,它总是以模态来显示对话框。
2.使用show()方法,它使得对话框既可以模态显示,也可以非模态显示,决定它是模态还是非模态的是对话框的modal属性。

三、modal属性定义如下
1.使用exec()方法显示对话框的话,将忽略modal属性值的设置并把对话框设置为模态对话框。
2.默认情况下对话框的该属性值是false,这时通过show()方法显示的对话框就是非模态的。而如果将该属性值设置为true,就设置成了模态对话框。 其作用于把QWidget::windowModality属性设置为Qt::ApplicationModal。

模态对话框

MyDialog myDlg;
myDlg.exec();//设置为模态对话框,最简单的就是使用exec()方法

MyDialog myDlg;
myDlg.setModal(true);    
myDlg.show();//设置为模态对话框,通过改变model的属性

非模态对话框

MyDialog myDlg;    
myDlg.setModal(false);
myDlg.show();//设置为非模态对话框,指定model属性为false

MyDialog myDlg;    
myDlg.show();//设置为非模态对话框,model属性默认为false,也可以不指定

MyDialog myDlg;    
myDlg.setModal();
myDlg.show();//设置为非模态对话框,model属性默认为false,也可以不指定
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务