Qt 多窗口控制--禁止非当前窗口的操作

应用场景
  当使用QT开发多个窗口的工具时,有时候需要禁止其他窗口的输入以及响应,确保当前窗口为顶层窗口。

功能实现
  通过设置QtWidget窗口的模态,可以实现限制非当前窗口的输入以及响应。根据创建QtWidget时,是否指定其父类,设定特定模态,实现对其他窗口的输入限制:

  1. 如果创建窗口时有指定了父窗口(QtWidgets.QWidget(parent=widget)),即传入parent参数,可以通过QWidget.setWindowModality(QtCore.Qt.WindowModal) 禁止父窗口及其祖父窗口的操作响应。

  2. 如果创建窗口时没有有指定了父窗口(QtWidgets.QWidget()),即没有传入parent参数,可以通过QWidget.setWindowModality(QtCore.Qt.ApplicationModal) 禁止应用其他界面的操作响应。

附:
  QWidget.setWindowModality 常用的几个参数说明:

  • QtCore.Qt.NonModal 非模态窗口,值为0,不会阻止其他窗口的响应;
  • QtCore.Qt.WindowModal 单层次的模态窗口,值为1, 即单窗口层次结构,会阻止父窗口及父窗口的兄弟窗口、祖父窗口以及祖父窗口的兄弟窗口的响应;
  • QtCore.Qt.ApplicationModal 应用的模态窗口,值为2,阻塞整个应用程序的所有窗口。

  官方文档地址:https://doc.qt.io/qtforpython-5/PySide2/QtCore/Qt.html#PySide2.QtCore.PySide2.QtCore.Qt.WindowModality

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值