PyQt4:如何切换“始终在最上”行为?

6 投票
4 回答
10565 浏览
提问于 2025-04-16 10:56

我想创建一个应用程序,让用户可以决定主窗口是否总是显示在其他应用程序的上面。

在PyQt4中,创建一个总是显示在最上面的窗口很简单。相关内容可以在这里找到:PyQt: Always on top

我想要一个小工具(比如菜单项、复选框等),可以用来切换这个功能的开关。目前为止,我还没有找到重置原始行为的方法。

谢谢

更新:
在İsmail 'cartman' Dönmez的建议下,我多搜索了一下,找到了一个在PyQt4中实现WindowFlags的例子。

可以在这里找到。

4 个回答

4

你想要使用 Qt::WindowStaysOnTopHint 这个提示,可以查看这个链接了解更多内容:窗口标志示例

5

Rosh说得对。不过别忘了在你改变标志之后加上window.show()。因为当你改变标志时,窗口会变得隐藏。我还附上了切换标志的代码。

这个代码会清除标志:

window.setWindowFlags(window.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)

这个代码会启用标志:

window.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)

这个代码会切换标志的状态:

window.setWindowFlags(window.windowFlags() ^ QtCore.Qt.WindowStaysOnTopHint)

17

这段代码应该可以让它失效:

window.setWindowFlags(window.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)

这段代码应该可以让它恢复有效:

window.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)

撰写回答