Seite 1 von 1

Ein Context Menu für mehrere Widgets

Verfasst: 22. November 2007 18:15
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

Verfasst: 22. November 2007 19:17
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...

Verfasst: 22. November 2007 19:35
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.

Verfasst: 22. November 2007 21:40
von upsala
Verwende QAction::setData() und gib z.B. die Widget-Adresse mit an.