Seite 1 von 1

Problem mit QContextMenuEvent

Verfasst: 9. April 2006 14:59
von svenstar
Hi Community...

Bin relativ neu in Sachen Qt und schreib mir grad ein Testprogrämmchen um alle standards in Sachen GUI abzudecken.

Nun bin ich aber auf ein Problem gestoßen im ContextEventHandling, das ich selbst gerade nicht lösen kann( oder nicht in adequader Zeit )...
Ich habe zwei versichiedene DockWidgets in meinem MainWindow und möchte auch dafür 2 verschiendene ContextMenues, also im einen nur Copy&Paste und im anderen alles was es auch im WinExplorer gibt, also z.B. Archivieren... Senden an...
Dafür ist ja die Position der Widgets entscheidend, ne?
Gibts da nen Extra Handling dafür, auf welchem Widget die Mouse sich befindet?


Meine Frage...
- wie bekomm ich das gebacken, verschiednene Context Menus für diverse Widgets zu setzen, die an Position sich ändern können

Code: Alles auswählen

void MainWindow::contextMenuEvent(QContextMenuEvent::Mouse)
{    
     QMenu contextMenu(this);
     
     copyAct->setMenu(&contextMenu);
     pasteAct->setMenu(&contextMenu);
     contextMenu.exec(0, event->globalPos());
}
Das wäre der Code z.B. für das Copy&Paste ContextMenu, müsste ja jetzt irgendwie die Pos noch übergeben, wie mache ich das???

Vielen Dank im voraus

Svenstar

Verfasst: 9. April 2006 21:15
von Alci
Hi,

das ganze funktioniert eigentlich relativ einfach:

Code: Alles auswählen

QObject::connect(<dein_dock_widget>, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(<deine_slot_methode>(const QPoint&)));
Das Signal "customContextMenuRequested" hat jedes Widget, was von QWidget abgeleitet ist. Du kannst dieses Signal abfangen und für deine Zwecke "missbrauchen". In <deine_slot_methode> erstellst du dann dein Context-Menü, so wie in deinem Beispiel-Code.

MfG, Alci.

Verfasst: 11. April 2006 10:14
von svenstar
1000 Dank für deine Antwort...

Grudlegend hab ich es soweit verstanden :wink:
Werde das so heute Abend nach der Arbeit ausprobieren.

Hoffe das bekomm ich so hin, wie ich das will...

Mfg

Svenstar