Seite 1 von 1

Context Menu soll nur im bestimmten Bereich aufrufbar sein

Verfasst: 11. Mai 2007 14:09
von Nash
Hi Ho,
ich habe ein Widget, und in einem bestimmten bereich dieses Widgets will ich, wenn der User die Rechte Maustaste drückt, das das ContextMenu erscheint.

desweitern erstellt man ein contextmenu doch immer erst in der Funktion?

Code: Alles auswählen

void contextMenuEvent(QContextMenuEvent* evt);

Verfasst: 11. Mai 2007 14:20
von macman
Da ruft man es auf, erstellen kannst Du es vorher schon. Allerdings ist ja der Sinn eines ContextMenüs nur sinnvolle Einträge zu enthalten, deshalb erstellt man es erst, wenn es gebraucht wird.

Was die Position angeht, ContextMenuEvent enthält die Mauskoordinaten und damit kannst Du dann prüfen, wo Du bist.

Verfasst: 11. Mai 2007 15:00
von Nash
okay, also immer erstellen wenn es aufgerufen wird.

mal ne andere Frage:

muss ich Action die ich erstelle, eigentlich von Hand löschen?

Code: Alles auswählen

m_WireFrameAct = new QAction(tr("Wireframe"), this);
auf ein new muss ja auch ein delete folgen, oder macht das qt für mich?

Verfasst: 11. Mai 2007 20:04
von upsala
Du hast bei QAction den Parameter this angegeben. Überleg dir mal warum du das getan hast, bzw. lies es in der Doku nach. Dann ergibt sich die Lösung deiner Frage fast von selbst...

Verfasst: 14. Mai 2007 14:21
von Nash
die Action ist child eines widgets.
deswegen hab ich den this zeiger übergeben.

Die Aktion bezieht sich damit nur auf das Widget.

Also nehme ich mal an qt löscht das für mich dann automatisch.