PyQt:对话框的最小化窗口按钮在OSX中丢失

时间:2014-03-05 02:20:14

标签: python pyqt qtcore

使用以下方式创建的对话框:

class GUI(QtGui.QMainWindow):
    def __init__(self):
        super(GUI, self).__init__()

global dialog
dialog = QtGui.QDialog()
myGui = GUI()

缺少最小化窗口按钮(OSX)。它在Windows中。我是否必须设置一些标志来显示这个丢失的控制器?请指教,提前致谢!

以后编辑:

我没有尝试使用QtGui.QDialog()解决无最小化按钮问题。但似乎我部分地知道如何使用QtGui.QMainWindow获取该缺失按钮。 以下是说明基本语法的最简单代码:

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication(sys.argv)

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()       

        myLineEdit = QtGui.QLineEdit("myLineEdit")
        myBoxLayout.addWidget(myLineEdit)

        myQWidget.setLayout(myBoxLayout)

        self.setCentralWidget(myQWidget)


window = MainWindow()
window.show()
window.resize(480,320)
sys.exit(app.exec_())

QtGui.QMainWindow背后的'关键''概念'是我们首先声明QWidget()

myQWidget = QtGui.QWidget() 

我们为其分配'主'布局:

myQWidget.setLayout(myBoxLayout)

最后一步不要忘记是使用以下方法将此QWidget()分配给对话框:

self.setCentralWidget(myQWidget)

其中'self'是QtGui.QMainWindow的实例子类。

2 个答案:

答案 0 :(得分:7)

我无法自己测试,但您可以尝试设置这些window flags

    dialog.setWindowFlags(dialog.windowFlags() |
        QtCore.Qt.WindowMinimizeButtonHint |
        QtCore.Qt.WindowSystemMenuHint)

(可能没有WindowSystemMenuHint标志。)

答案 1 :(得分:3)

QtGui.QDialog在任何平台上都没有提供最小化按钮,但QtGui.QMainWindow确实在每个平台上提供(Windows,Linux和OSX)。您正在创建QDialog对象,同时创建GUI的对象,该对象是QMainWindow的子类。如果你写myGui.show(),窗口将为你提供所有三个按钮(最小化,最大化/恢复和关闭)。但是在dialog.show()的情况下,你不会有两个(最小化和最大化/恢复)。这是Qt的限制。