PyQt: 总在最上层
这是关于PyQt4、Linux和Python 2.5的内容。
我可以让PyQt把我的窗口设置为“总在最上面”,这样它就会覆盖其他应用程序吗?
比如在GTK中,我使用的是属性:Modal。
现在,在PyQt中我使用的是QWidget,但我找不到实现这个功能的方法。
有没有什么想法呢??
3 个回答
2
对于没有标题栏的窗口和总是显示在最上面的窗口。
使用:
setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)
注意:如果你尝试单独设置窗口标志,那么没有标题栏的窗口就无法正常工作。
例如:下面的代码不会产生没有标题栏且总是在最上面的窗口。
self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowFlags(Qt.WindowStaysOnTopHint)
26
setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
setwindowaFlags
是一个方法,你可以从 form
对象中调用它。这个方法只需要一个参数,就是一个常量 QtCore.Qt.WindowStaysOnTopHint
,它的意思是让你的窗口始终保持在最上面。
42
给QMainWindow传递一个叫做WindowStaysOnTopHint
的窗口标志,或者使用setWindowFlags方法。
顾名思义,这个标志是给窗口管理器的一个提示,并不是绝对保证窗口一定会在最上面。
下面是一个最简单的例子:
import sys
from PyQt4 import QtGui, QtCore
class mymainwindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
app = QtGui.QApplication(sys.argv)
mywindow = mymainwindow()
mywindow.show()
app.exec_()