在QWidget上实现窗口阻塞

本文介绍了如何在QWidget非模态窗口下实现阻塞效果,通过设置windowFlags和windowModality。同时提到了使用Qt::Dialog的局限性和Qt::ToolTip的特点,强调了系统默认模态窗口的优先性及避免不良编程习惯的重要性。
摘要由CSDN通过智能技术生成

前提概要

在我们想实现阻塞窗口时,第一反应就是QDialog的模态窗口,但是由于QDialog无法正常使用等情况(自己就遇到了这个问题),那我们就要找别的方法了。接下来展示在QWidget的非模态窗口下实现阻塞效果。

代码展示:

Widget = new QWidget;

Widget->setWindowFlags(Widget->windowFlags() |Qt::Dialog);

Widget->setWindowModality(Qt::ApplicationModal); //阻塞除当前窗体之外的所有的窗体

setWindowFlags 可用来设置窗口的属性,他的属性种类可分为很多种(大家有兴趣的可以查一查,我就只介绍所使用的以及一些简单的)。

Qt::Dialog可想而知,它是相当于吧Qwidget强转于QDialog的,但是他有强迫的不是那么明显,但是它使用的是QDialog构造函数的默认值,因此才可以使QWidget实现组合窗口的效果。同理可得,Qt::Widget和Qt::Window一样。可通过举一反三去思考他们的用法,但是在自己动脑后一定记得要去查,鉴别是否完全正确。

Widget->windowFlags()是获取Widget的当前属性。

新学习的内容

在查资料的过程中发现,Qt::ToolTip可设置此窗口为提示窗口,但是没有标题栏和窗口的边框。

总结

如果可以正常使用QDialog作为模态化窗口,那最为推荐的是系统默认的,而这种强转实现的窗口阻塞只在迫不得已的情况下推荐。毕竟自带的肯定是有它的稳定性以及它的好处,否则开发者就不会这样做了。并且这种方法使用起来比较容易出现思路混乱,容易形成不好的习惯,就像我现在在创建新的界面是都是习惯性的使用QWidget,以后一定要修正这个不好的习惯,也希望大家不要向我学习。

今天的更文到此结束,希望大佬批评指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值