-
对于QDialog对话框有感
-
关于exec()和show()两个成员来说,相同点为功能都是将页面展现出来。不同点原来理解是exec()为模态窗口,show()为非模态窗口。
-
但最近突然发现这样的理解是有误的,exec()创建一个模态窗口是毋庸置疑的。而show()创建的不一定为模态窗口。经查阅,文档中写的很详细:
-
QDialog的isModal这个属性决定show()弹出的对话框是模态的还是非模态的
-
默认情况下,这个属性为false,并且show()弹出的对话框是非模态的。将此属性设置为true相当于将QWidget::windowModality设置为Qt::ApplicationModal,即模态的
-
-
而且经测试exec()和show()的另一个不同为:
-
exec()会阻塞主线程,等待处理结束后才会执行后面的程序。
-
而show()不管它创建的窗口是否为模态的,都不会阻塞程序的执行,只会阻塞父窗口的消息循环。
-
-
还有QMessageBox的isModal属性默认为true,即模态对话框。
-
有关qt的QDialog对话框exec()及show()
于 2021-11-29 15:43:27 首次发布