在 QWidget 上实现窗口阻塞
前提概要
在我们想实现阻塞窗口时,第一反应就是 QDialog 的模态窗口,但是由于 QDialog 无法正常使用等情况(自己就遇到了这个问题),那我们就要找别的方法了。接下来展示在 QWidget 的非模态窗口下实现阻塞效果。
代码展示:
setWindowFlags 可用来设置窗口的属性,他的属性种类可分为很多种(大家有兴趣的可以查一查,我就只介绍所使用的以及一些简单的)。
Qt::Dialog 可想而知,它是相当于吧 Qwidget 强转于 QDialog 的,但是他有强迫的不是那么明显,但是它使用的是 QDialog 构造函数的默认值,因此才可以使 QWidget 实现组合窗口的效果。同理可得,Qt::Widget 和 Qt::Window 一样。可通过举一反三去思考他们的用法,但是在自己动脑后一定记得要去查,鉴别是否完全正确。
Widget->windowFlags()是获取 Widget 的当前属性。
新学习的内容
在查资料的过程中发现,Qt::ToolTip 可设置此窗口为提示窗口,但是没有标题栏和窗口的边框。
总结
如果可以正常使用 QDialog 作为模态化窗口,那最为推荐的是系统默认的,而这种强转实现的窗口阻塞只在迫不得已的情况下推荐。毕竟自带的肯定是有它的稳定性以及它的好处,否则开发者就不会这样做了。并且这种方法使用起来比较容易出现思路混乱,容易形成不好的习惯,就像我现在在创建新的界面是都是习惯性的使用 QWidget,以后一定要修正这个不好的习惯,也希望大家不要向我学习。
今天的更文到此结束,希望大佬批评指教!
版权声明: 本文为 InfoQ 作者【用户10086】的原创文章。
原文链接:【http://xie.infoq.cn/article/df4c2a3baff24f86dd0ebe403】。文章转载请联系作者。
评论