Ein Context Menu für mehrere Widgets

Alles rund um die Programmierung mit Qt
Antworten
hafwil
Beiträge: 20
Registriert: 22. Mai 2006 16:18

Ein Context Menu für mehrere Widgets

Beitrag von hafwil »

Hallo!

Ich zeige in einem Dialog dynamisch viele Widgets an, und alle haben das gleiche Contextmenü. Wenn der Benutzer jetzt eine Aktion in diesem Contextmenü auswählt, dann wirkt sich das nur auf das eine Widget aus.
Was jetzt genau passiert, entscheidet der Hauptdialog darüber. Ich müsste also über einen Slot im Hauptdialog feststellen können, dass eine Aktion des Contextmenüs aufgerufen wurde, und zu welchem childWidget das Event jetzt gehört, z.B.

void ContextMenuActionTriggered(bool, MyWidget *Sender)

Wie kann ich so etwas realisieren? Oder gibt es eine andere Lösung?
Ich möchte die Actions nicht in den childWidgets selbst behandeln, da der Hauptdialog bestimmt, welche Actions es gibt, und später immer neue hinzukommen können...

LG Willi
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

In deinem Menü sind QActions, und diese liefern dir Signale. Wohin du diese Signale verbindest ist doch deine Sache, du bist in diesem Falle nicht an ein bestimmtes Widget gebunden...
hafwil
Beiträge: 20
Registriert: 22. Mai 2006 16:18

Beitrag von hafwil »

ja das ist schon ok... ich möchte jedoch alle events der gleichen art in einem slot behandeln, und muss aber trotzdem bestimmen können, zu welchem widget das event gehört.

z.B. Ich habe 10 widgets die mir irgendwelche livedaten anzeigen. Bei allen Widgets kann ich über das ContextMenü "Liniendiagramm anzeigen" auswählen. Bei 2 kann ich zusätzlich noch ein Balkendiagramm auswählen. Die Anzahl der Widgets ist verschieden, beim nächsten Mal könnten es beliebig viel mehr sein. Jetzt möchte ich alle Liniendiagramm-Events in einem Slot behandeln, und alle Balkendiagramm-Events in einem. Dann muss ich aber noch wissen, für welches Widget das Event jetzt ausgelöst wurde, damit ich auch das richtige Linien- oder Balkendiagramm anzeigen kann.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Verwende QAction::setData() und gib z.B. die Widget-Adresse mit an.
Antworten