Seite 1 von 1

[gelöst] Toolbar Funktionen für andere QWidget freigeben?

Verfasst: 2. Mai 2010 10:11
von 24dan
Hi, wie kann ich es ganz einfach ermöglichen das die Toolbar Funktionen meines Hauptprogrammes auch die QWidgets auf meinem QStackedWidget welche CentralWidget im Hauptprogramm gesetzt ist beeinflussen?

Ich habe da zB an "Drucken" oder "Speichern" oder "Alles Makieren" gedacht?

Mein bisheriges Konzept geht erstmal nicht.
Ich bekomme kein: connect Action im Hauptprog mit Oberflächenelemente meiner QWidget Test Klasse.

Jetzt kann ich sicher die Action was emit lassen was dann mein QWidget Test empfängt und ausführt. Okay. Problem wie kann dann in Abhängigkeit zur veränderten Oberfläche in meiner Qwidget Test die Toolbar Action im Hauptprogramm SetEnabled werden? Also die Kommunikation auch andersherum läuft?

Sicher das einfachste ist es jedem QWidget seine eigene Toolbar zu geben. Aber das bedeutet viel Programmierung (alles doppelt), viel Pflege und das ist immer viel Ärger. :roll:

Verfasst: 2. Mai 2010 10:28
von franzf
Irgendwie ist deine Beschreibung arg konfus :D
(Oder ich bin noch nicht zurechnungsfähig)

Du kannst nicht einfach eine "QAction was mit emit lassen", du kannst höchtsens eine Methode von QAction aufrufen, die ihrerseits dann die getätigte Änderung an die Außenwelt mit einem emit() signalisiert.
Und der Weg andersherum: Die Widgets die in deinem QStackedWidget liegen als eigene Klassen (natürlich von QWidget abgeleitet) konzipieren.
Wenn sich in denen dann was ändert hast du das emit() selber in der Hand. Dann brauchst du das SIGNAL nur an die jeweilige QAction connecten und - voila - die QAction kann sich ändern :)
Ich würde in dem Fall bei einer Änderung des aktuellen QStackedWidget-Widgets die alten Verbindungen trennen, damit eine Änderung eines nicht angezeigten Widgets nicht plötzlich deine Toolbar ändert ;)

Verfasst: 2. Mai 2010 10:45
von 24dan
Sehr gut, danke Du hast mich auf jeden Fall richtig verstanden.

Sorry das mit Action emit war zu kurz beschrieben jedoch genauso gemeint wie von Dir nochmal klargemacht.

Ich versuche das mal auf die Beine zu stellen. :wink:

Verfasst: 2. Mai 2010 10:46
von upsala
Ich habe mir für soetwas eine ähnliche Klasse wie die KActionCollection aus KDE nachgebaut. Schau dir diese mal an.