关于 PyQt5 非模态对话框的顶置问题

关于 PyQt5 非模态对话框的顶置问题

PyQt5程序中的非模态对话框第一次打开时是顶置的,但被别的窗口遮盖之后,无法简单地重新顶置,除非从遮挡它的窗口后面找到它并用鼠标单击。在程序中,重新使用show方法并不会将其带到界面的最前面。虽然可以用raise_或SetWindowFlags方法让其顶置,但如果不作别的处理,它就总是顶置,直到关闭。我们试用了两种方式来解决这个问题。
第一种方式是用SetWindowFlags设置对话框标志后再重新显示的方式来解决这个问题,使用PyQt5的Python样例程序如下:

from PyQt5 import QtCore
......

	def show_port_config(self):
		self.PortConfBrowserW.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
		self.PortConfBrowserW.show()
		self.PortConfBrowserW.setWindowFlags(QtCore.Qt.Widget)
		self.PortConfBrowserW.show()

这里,show_port_config是主窗口对象中的一个槽函数,可以由一个按钮(例如“显示”按钮)或其他方式触发,显示其中一个名为PortConfBrowserW的非模态对话框实例成员。

第一个setWindowFlags是将对话框设置为顶置,然后用show将其显示出来。这时,如果没有下面的操作,这个对话框永远显示在最上面;而第二个setWindowFlags就是将恢复其可以被别的窗口遮盖的特性,并重新显示。这时,对话框仍然在最前面。

当这个对话框被别的窗口遮盖以后,如果再按一次“显示”按钮,重新调用这个槽函数,又可以把这个对话框带到最前面,并再恢复到可以被别的窗口遮盖的状态。

还有一种方式更为简单:进入槽函数时,先判断这个对话框是否已打开,如果已打开,就将其关闭,然后再打开;如果没被打开,则直接打开即可。具体程序就不在此赘述了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值