模态和非模态

       
        今天学习Qt中遇到了两个新名词——模态和非模态,自己也不太了解,于是就上网简单的查到一些解释,感觉挺通俗易懂的,于是就记录下来:
       模态对话框,就是指当这个对话框弹出来的时候,焦点集中于该子对话框,子对话框不关闭,用户就无法操作其它窗口,也就是鼠标不能单击这个对话框之外的区域。例如:windows的选择字体颜色对话框,必须先关闭对话框才能进行其他操作。
        非模态对话框通常用于显示用户需要经常访问的空间和数据,并且在使用这个对话框的过程中需要访问其他窗口的情况,就是可以在多个窗口之间切换。例如:发邮件时添加附件就是非模态的。
如果从线程角度来讲,模态对话框就是线程阻塞,也就是子对话框是一个线程,但是在创建这个子线程后,父窗口就阻塞了;模态对话框则是不是阻塞型的的线程模型,父子进程可以并行执行。

QDialog和QWidget都可以是模态和非模态
exec();show()
是否是模态和上两个函数无关,之和窗口属性有关
setAttribute(Qt::WA_ShowModal,ture)或setWindowModality(Qt::ApplicationModal);修改其是否为模态
对于QDialog还可以用其它成员函数setModal(true);   dig->show();

exec()之所以是模态是因为它先设置了窗口的属性:setAttribute()再show()是原因
如果设置为非模态:setModal(false);  dig->show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值