Seite 1 von 1

[gelöst] Methode(n) von parent ausführen

Verfasst: 6. April 2008 20:54
von gelignite
Hallo,

ich habe mir mit dem Designer ein QMainWindow angelegt in welches ich ein von QWidget abgeleitetes meinWidget eingefügt habe. Zusätzlich enthält das MainWindow eine Menüleiste, unter anderem mit dem Menüpunkt Extras/Einstellungen.

In jenem meinWidget überlade ich nun den QWidget::mousePressEvent um ihn für meine Zwecke zu verwenden. Es soll bei einem Mausklick auf das meinWidget der Menüpunkt Extras/Einstellungen.

Mein Problem dabei ist nun Folgendes:
meinWidget ist von QWidget abgeleitet und ist lediglich als centralWidget in das MainWindow eingebunden. Es hat aber sonst keinerlei Bezug zum MainWindow. Dieses MainWindow jedoch enthält den Menüpunkt Extras/Einstellungen. Wie komme ich an diesen Menüpunkt heran?

Aus dem Bauch heraus würde ich auf ein Signal tippen. Aber was habe ich dann in den betreffenden .h bzw .cpp Dateien zu tun? Nur connects und emits oder noch irgendwelche includes?

Ich stehe da noch ein wenig auf dem Schlauch und hoffe auf eure Hilfe.

Gruß,
gelignite

Verfasst: 6. April 2008 21:06
von C167
du koenntest aus deiner Klasse ein Signal (emit signal(parameter)) abschicken, dass du per SLOT im MainWindow auffaengst

Verfasst: 8. April 2008 22:29
von gelignite
Hallo,

nachdem ich mir das ganze nochmal _nach_ einer Mütze Schlaf angeschaut habe, ist mir aufgefallen, dass die Sichtweise schlichtweg falsch herum ist.

Trotzdem danke für die Hilfe.


Nur der Vollständigkeit halber:

Bislang versuchte ich von meinWidget aus das MainWindow zu erreichen. Das macht aber wenig Sinn, wenn das meinWidget in einem räumlich anderen Zusammenhang verwendet würde, also nicht als centralWidget eines MainWindow wie in diesem Fall, sondern beispielsweise inmitten eines sich öffnenden Dialogs. Dann würde das Signal sonstwohin emittiert, aber sehr wahrscheinlich nicht dahin, wohin es eigentlich gedacht ist.

Die richtige Sichtweise ist also eher:
Wird das Widget angeklickt und der meinWidget::MousePressEvent ausgelöst, so ruft dieser die passende Methode in meinWidget auf. Wird im MainWindow der Menüpunkt Extras/Einstellungen aufgerufen, so wird nun hier einfach nur ein Signal an centralWidget (sofern vorhanden) gesendet, welches die zugehörige Methode in meinWidget aufruft.

Gruß,
gelignite