【问题标题】:Ubuntu ignores PyQt4 flagsUbuntu 忽略 PyQt4 标志
【发布时间】:2016-01-18 15:43:45
【问题描述】:

我想要一个自定义对话框,它有最小化按钮和关闭按钮(没有最大化)
那么,我该怎么做

from PyQt4 import QtGui

class CustomDialog(QtGui.QDialog):

    def __init__(self):
        super(WinDialog, self).__init__(None,
            QtCore.Qt.WindowMinimizeButtonHint |\
            QtCore.Qt.WindowCloseButtonHint|)

在 Windows 中它按预期工作 - 在标题栏中转到最小化按钮,然后禁用最大化按钮,然后关闭按钮
在 Ubuntu 中,我根本看不到任何变化 - 最大化按钮旁边的关闭按钮。没有最小化 - CustomDialog 的行为就像它仍然是 QDialog。
我不知道是 Ubuntu 的“bug”还是“PyQt”——现在我很困惑。

【问题讨论】:

    标签: pyqt pyqt4 x11 ubuntu-15.04


    【解决方案1】:

    来自documentation

    请注意,X11 版本的 Qt 可能无法在所有系统上提供样式标志的所有组合。这是因为在 X11 上,Qt 只能询问窗口管理器,而窗口管理器可以覆盖应用程序的设置。在 Windows 上,Qt 可以设置你想要的任何标志。

    所以这很可能是你在 ubuntu 中的 windows 管理器的错。

    请注意,您可能想尝试更新现有的窗口标志,以确保您没有覆盖重要的默认值(您当前设置窗口标志的方法只是设置指定的那些)。您可以改为这样做以保留默认窗口标志,但修改您关心的那些:

    def __init__(self):
        super(WinDialog, self).__init__(None)
        windowFlags = self.windowFlags()
        windowFlags &= ~Qt.WindowMaximizeButtonHint # remove maximise button
        windowFlags &= ~Qt.WindowMinMaxButtonsHint  # remove min/max combo
        windowFlags &= ~Qt.WindowContextHelpButtonHint # remove help button
        windowFlags |= Qt.WindowMinimizeButtonHint  # Add minimize  button
        self.setWindowFlags(windowFlags)
    

    请注意,flags &= ~flag 删除了一个标志。 flags |= flag 添加一个标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2018-08-19
      相关资源
      最近更新 更多