Problem: Dialog minimeren

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
hoppelchen
User
Beiträge: 18
Registriert: Mittwoch 13. April 2011, 17:45

Hallo zusammen,

ich habe ein Problem mit einem Dialog, der sich nicht minimieren lässt. Daneben sollte die Option "maximieren" und "schließen" verfügbar sein.
Sollte ja normalerweise über WindowsFlags gehen. Tut's aber (bei mir) nicht. Stattdessen hab ich nur noch die Option "maximieren". Folgendes Minimalbeispiel:

Code: Alles auswählen

from PyQt4 import QtGui, QtCore
import sys


class fenster(QtGui.QMainWindow):
    def __init__(self, parent=None):

        QtGui.QMainWindow.__init__(self, parent) 

        self.setWindowTitle("Main")
        self.resize(200, 200)
        self.grid = QtGui.QGridLayout()

        self.widget = QtGui.QWidget(self)
        self.widget.setLayout(self.grid) 
        self.setCentralWidget(self.widget)
        
        self.button = QtGui.QPushButton("Neuer Dialog", self.widget)
        self.grid.addWidget(self.button, 0, 0)
        self.button.clicked.connect(self.oeffne)

    def oeffne(self):
        dialog = neuer_Dialog(self)
        dialog.show()


class neuer_Dialog(QtGui.QDialog):
    def __init__(self, parent):
        QtGui.QDialog.__init__(self, parent, QtCore.Qt.WindowMinMaxButtonsHint)

        self.setModal(False)
        self.setWindowTitle("Dialog")
        self.resize(150, 150)

        self.grid = QtGui.QGridLayout()
        
        self.button = QtGui.QPushButton("Beenden", self)
        self.grid.addWidget(self.button, 0, 0)
        self.button.clicked.connect(self.close)
    
        
if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        main = fenster()
        main.show()
        sys.exit(app.exec_())
Hat jemand diesbezüglich ne Idee? Ich steh aufm Schlauch.

Vielen Dank für Eure Hilfe.

edit: jo, hast recht. Nach Abänderung klappts aber immer noch nicht... :K
Zuletzt geändert von hoppelchen am Freitag 2. September 2011, 18:31, insgesamt 2-mal geändert.
deets

Also, aus dem Bauch raus wuerde ich mal sagen: dein __init__ im Dialog sieht komisch aus, du rufst ja nicht die super-Klasse QDialog, sondern QWidget. Das koennte es erklaeren.
hoppelchen
User
Beiträge: 18
Registriert: Mittwoch 13. April 2011, 17:45

@ deets:
Danke für den Hinweis. Hoffe, ich hab deinen Hinweis richtig interpretiert und entsprechend richtig ausgebessert...

Ändert jedoch nichts daran, dass ich meinen Dialog immer noch nicht minimieren kann :(
lunar

@hoppelchen: Aus der Dokumentation von Qt.WindowType:
This enum type is used to specify various window-system properties for the widget. They are fairly unusual but necessary in a few cases. Some of these flags depend on whether the underlying window manager supports them.
Weiter in der Dokumentation zu "Qt.Dialog":
Indicates that the widget is a window that should be decorated as a dialog (i.e., typically no maximize or minimize buttons in the title bar). This is the default type for QDialog. […]
Daher auch der Name "MinMaxButtonsHint": Diese Option ist eben nur ein Hinweis an das System, die entsprechenden Knöpfe anzuzeigen. Dem System steht es frei, diesen zu ignorieren. In diesem Fall geschieht das offenbar.
hoppelchen
User
Beiträge: 18
Registriert: Mittwoch 13. April 2011, 17:45

@ lunar:
jo, dass ich da nicht selbst drauf gekommen bin :oops: "Hint = Hinweis" weiß ich doch eigentlich :) Und die Dokumentation zu Qt ist auch einfach nur gut beschrieben. Nur manchmal überliest man hier und da ein oder zwei Sätzchen...

Danke dir auf alle Fälle. Damit hat sich das Thema wohl erledigt.
Antworten