5

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

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

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

谢谢你

更新在 İsmail 'cartman' Dönmez 的建议之后,我进行了更多搜索,并在 PyQt4 中找到了 WindowFlags 示例的实现。

可以在这里找到

4

4 回答 4

15

这应该禁用它:

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

这应该启用它:

window.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
于 2011-01-31T12:18:47.853 回答
5

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

这将清除它:

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

这将启用它:

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

这将切换它:

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

于 2015-10-08T20:57:45.657 回答
4

您需要Qt::WindowStaysOnTopHint提示,请参阅Window Flags Example

于 2011-01-31T12:03:15.377 回答
1

我无法评论Rosh 的回答,因此请注意 - 对于 Devuan 上的 PyQt 5.7,如果在 QDialog 显示后切换 WindowStaysOnTopHint 标志,则窗口会消失,您需要在之后立即再次显示()。除此之外,它的工作原理。

于 2017-11-05T14:02:12.957 回答