有关qt的QDialog对话框exec()及show()

  1. 对于QDialog对话框有感

    1. 关于exec()和show()两个成员来说,相同点为功能都是将页面展现出来。不同点原来理解是exec()为模态窗口,show()为非模态窗口。

    2. 但最近突然发现这样的理解是有误的,exec()创建一个模态窗口是毋庸置疑的。而show()创建的不一定为模态窗口。经查阅,文档中写的很详细:

      1. QDialog的isModal这个属性决定show()弹出的对话框是模态的还是非模态的

      2. 默认情况下,这个属性为false,并且show()弹出的对话框是非模态的。将此属性设置为true相当于将QWidget::windowModality设置为Qt::ApplicationModal,即模态的

    3. 而且经测试exec()和show()的另一个不同为:

      1. exec()会阻塞主线程,等待处理结束后才会执行后面的程序。

      2. 而show()不管它创建的窗口是否为模态的,都不会阻塞程序的执行,只会阻塞父窗口的消息循环。

    4. 还有QMessageBox的isModal属性默认为true,即模态对话框。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值