1

我想要一个CustomDialog,它有最小化按钮和关闭按钮(没有最大化)
所以,我做什么

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”——现在我很困惑。

4

1 回答 1

1

文档

请注意,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添加一个标志。

于 2016-01-18T21:02:08.433 回答