【问题标题】:PyQt4 : How can i toggle the "Stay On Top" behavior?PyQt4:如何切换“保持领先”行为?
【发布时间】:2011-01-31 11:58:51
【问题描述】:

我想创建一个应用程序,用户将决定它的主窗口将始终位于其他应用程序的顶部。

在 PyQt4 中,创建一个始终位于顶部的窗口很容易。这在此处进行了介绍:PyQt: Always on top

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

谢谢

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

可以找到here

【问题讨论】:

    标签: python pyqt4 stayontop


    【解决方案1】:

    这应该禁用它:

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

    这应该会启用它:

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

    【讨论】:

    • 我花了一段时间才发现应该调用windowFlags() 来保留Qt.WindowFlags 类型。如果我尝试使用 XOR 并从头开始构建标志(在我的情况下为 Qt.Dialog ^ Qt.WindowContextHelpButtonHint),我会得到 TypeError,因为我最终得到的是 int 而不是 Qt.WindowFlags
    • 这应该是公认的答案。它显示了禁用/启用此功能的方法
    【解决方案2】:

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

    这将清除它:

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

    这将启用它:

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

    这将切换它:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      【解决方案4】:

      我无法对Rosh's answer 发表评论,因此请注意 - 对于 Devuan 上的 PyQt 5.7,如果在 QDialog 显示后切换 WindowStaysOnTopHint 标志,则窗口会消失,您需要显示()它之后立即再次。除此之外,它还有效。

      【讨论】:

        猜你喜欢
        • 2020-02-20
        • 2010-10-19
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2023-03-23
        • 2020-04-19
        相关资源
        最近更新 更多