[gelöst] Parameter parent

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
feldmaus
User
Beiträge: 284
Registriert: Donnerstag 12. Oktober 2006, 16:48

Montag 3. März 2008, 20:15

Hi Leute,

bei meinem Projekt sind ein paar weitere Fragen aufgetaucht.
Der Parameter "parent" besagt laut Quelle "C++ GUI Programmierung mit Qt 4", Seite 41, 2007,
  • Der Parameter parent gibt das übergeordnete Widget an."
Nun benutze ich als Vorlage für mein Projekt folgenden Code Schnippsel,

Code: Alles auswählen

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
In Zeile 3 wird gesagt es gibt kein übergeordnetes Widget, und in der Zeile 4 wieder doch, oder wie nun?

Weiterhin verstehe ich die Zeile 4 nicht. Was bewirkt diese?

Mein Hauptprogramm ist eine MDI. Wie könnte eine Klassen Deklaration für ein MDI Child aussehen, bezogen auf den Parameter parent ?

Grüße Markus
Zuletzt geändert von feldmaus am Montag 3. März 2008, 21:41, insgesamt 1-mal geändert.
lunar

Montag 3. März 2008, 21:04

feldmann_markus hat geschrieben: Nun benutze ich als Vorlage für mein Projekt folgenden Code Schnippsel,

Code: Alles auswählen

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
In Zeile 3 wird gesagt es gibt kein übergeordnetes Widget, und in der Zeile 4 wieder doch, oder wie nun?
Nein. In Zeile 3 gibst du ein Default-Wert für das Argument "parent" an. Wird dieses beim Aufruf von __init__ nicht angegeben, dann wird automatisch None "eingesetzt" (für Top-Level-Widgets wie eine MainWindow-Instanz). In Zeile 4 wird dann einfach eine Methode aufgerufen, der das parent-Objekt übergeben wird.

Zeile 3 ist folglich eine Methodendefinition mit Default-Parameter, während Zeile 4 ein normaler Methodenaufruf mit Parameterübergabe ist. Das sind aber absolute Basics, die in jedem Tutorial erklärt werden.
Weiterhin verstehe ich die Zeile 4 nicht. Was bewirkt diese?
Das ist der Aufruf des Konstruktors der Basisklasse. Er bewirkt, dass die in der Basisklasse definierte Initialisierung durchgeführt wird, was nötig ist, um das C++-Objekt zu erzeugen, welches das Widget repräsentiert.

Sowohl Basiskonstruktoren als auch Default-Argumente sollten dir aber eigentlich bekannt sein, wenn du ernsthaft mit Python programmieren willst. Da diese Dinge mehr oder weniger zu den grundlegenden Dingen gehören, und das Forum eigentlich nicht dafür da ist, dir Tutorial und Doku vorzulesen, schlage ich einfach mal vor, dass du dir überhaupt erstmal die Grundlagen von Python aneignest, bevor du direkt in die GUI-Programmierung einsteigst.



Grüße Markus[/quote]
Antworten