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

Alles rund um die Programmierung mit Qt
Antworten
gelignite
Beiträge: 37
Registriert: 6. Dezember 2007 21:23
Kontaktdaten:

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

Beitrag 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
Zuletzt geändert von gelignite am 8. April 2008 22:29, insgesamt 2-mal geändert.
{brigens ist ein Kezboard/Treiber v;llig [berfl[ssig!
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

du koenntest aus deiner Klasse ein Signal (emit signal(parameter)) abschicken, dass du per SLOT im MainWindow auffaengst
gelignite
Beiträge: 37
Registriert: 6. Dezember 2007 21:23
Kontaktdaten:

Beitrag 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
{brigens ist ein Kezboard/Treiber v;llig [berfl[ssig!
Antworten