• 让QMainWindow也表现出QDialog的exec函数的特征


      前几天在做毕业设计项目的时候,使用的PyQt4,想实现这么样一个功能:

      场景描述:主窗口a(QMainWindow类型)和主窗口b(QMainWindow),b是通过a窗口中某一个按钮弹出来的。

      功能:b窗口弹出来之后a窗口不能进行任何操作

      实现方法:

      用过Qt的同学应该很清楚,如果是QDialog类型的话,这个功能是很容易实现的,只需要通过QDialog的exec函数就可以阻塞原窗口,但是QMainWindow是没有这样的函数的,但是我们可以怎样实现呢?

      方法1:重现QMainWindow的实现函数,增加一个exec函数(这个需要使用者对Qt的实现很熟悉,门槛相对来说比较高)

      方法2:学过window GUI编程的人应该知道窗口有两种类型:模态和非模态,简单点来讲:模态窗口就是指当前的窗口不关闭之前,其他窗口就会阻塞,不能进行任何操作,类似于:打开文件,保存文件窗口;而非模态就没有这样的限制了。

      好了,既然知道了这个概念就不难实现了,Qt中也提供了相应的函数来实现模态和非模态窗口的定义,具体只需要在构造函数中加入下面的函数就可以了:2 self.setWindowModality(QtCore.Qt.ApplicationModal);

    1 #设置窗口为模态窗口
    2 self.setWindowModality(QtCore.Qt.ApplicationModal);

      这样就可以实现了。是不是很简单?当然,一般QMainWindow都会加上下面这个函数:

    1 self.setAttribute(QtCore.Qt.WA_DeleteOnClose);

      C++下也是同样的方法。

      

  • 相关阅读:
    linux最常用命令记录(一)
    2020centos解决“nginx 403 Forbidden"错误的故事
    nginx显示静态html爆502 bad gateway的错误提示
    codeigniter框架的使用感受和注意事项
    网闸
    抗DDOS防火墙
    负载均衡
    上网行为管理
    漏洞扫描系统
    网络分析系统
  • 原文地址:https://www.cnblogs.com/seancheer/p/5094702.html
Copyright © 2020-2023  润新知