PyQt - 让窗口置顶

3

我需要使窗口在需要时成为顶层窗口。

创建窗口的代码:

class Application(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, None, Qt.Tool | Qt.FramelessWindowHint)
        self.setFocusPolicy(Qt.StrongFocus)
        self.setAttribute(Qt.WA_QuitOnClose, True)

当我需要时,我会做以下事情:

self.setWindowFlags(Qt.WindowStaysOnTopHint)

在运行这段代码后,我的窗口消失了...我不知道它去了哪里。但是我的程序没有关闭! 求助!如何在需要的时候使我的窗口始终处于最上层?

1个回答

7

在您的窗口上调用.show()或.raise()应该使其成为焦点。

并且从setWindowFlags()文档中

注意:更改窗口标志时,此函数会调用setParent(),导致小部件被隐藏。您必须调用show()才能使小部件再次可见。

我只是想为其他发现这个问题的人添加一些内容,即Qt C++文档即使在使用PyQt时也是一个非常好的资源,只需确保您指向适用于您使用的PyQt版本的Qt C++文档版本(最新的PyQt针对4.4进行编译,如果您正在使用它,则需要相应版本的Qt C++文档)。


1
window.raise_() 在我的 Linux 和 PyQt 4.8.3 上无法工作,这是一个 bug 吗? - saeedgnu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接