PyQt4:我如何切换"保持最佳状态"行为?

pma*_*v99 4 python pyqt4 stayontop

我想创建一个应用程序,用户将决定主窗口将始终位于其他应用程序之上.

在PyQt4中,很容易创建一个始终位于顶部的窗口.这里包括:PyQt:始终在最前面

我希望有一个小部件(菜单项,复选框等),可以打开或关闭此行为.到目前为止,我还没有找到重置原始行为的方法.

谢谢

更新在İsmail'cartman'Dönmez的建议之后,我搜索了一下,我在PyQt4中找到了WindowFlags示例的实现.

它可以在这里找到

Ros*_*ron 13

这应该禁用它:

window.setWindowFlags(window.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)
Run Code Online (Sandbox Code Playgroud)

这应该使它:

window.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
Run Code Online (Sandbox Code Playgroud)

  • 我花了一段时间才发现应该调用`windowFlags()`来保存`Qt.WindowFlags`类型.如果我尝试使用XOR并从头开始构建标志(在我的例子中是`Qt.Dialog ^ Qt.WindowContextHelpButtonHint`),我得到`TypeError`,因为我最终得到`int`而不是`Qt.WindowFlags`. (3认同)

小智 5

罗什是对的。但是不要忘记在更改标志后包含 window.show() 。更改标志时,您的窗口将隐藏。我还包含了用于切换标志的代码。

这将清除它:

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

这将启用它:

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

这将切换它:

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