2009-04-12 6 views
7

Ich habe eine QTableView in der Hauptbenutzeroberfläche meines Programms. Ich möchte das Popup-Menü anzeigen, wenn der Benutzer mit der rechten Maustaste auf die Zellen der Tabelle klickt und entsprechende Aktionen ausführt, wenn eine Option aus dem Menü ausgewählt wird.Erstellen von Popup-Menü in Qt für QTableView

Ich verwende Qt Creator 1 (Qt Version 4.5). Wie kann ich das machen?

Antwort

22

Überprüfen Sie das customContextMenuRequested Signal, um das Ereignis zu erhalten, und verwenden Sie QMenu für das Menü selbst. Verwenden Sie QTableView::indexAt, um herauszufinden, welche Zellen bei jedem Klicken auf die Koordinaten des Signals geklickt wurden, und ergreifen Sie die entsprechende Aktion, wenn auf einen Menüeintrag geklickt wird.

+2

Sie müssen menu.exec aufrufen (const QPoint &), um es anzuzeigen. Stellen Sie sicher, dass Sie es in die entsprechenden Koordinaten übersetzen: menu.exec (mapToGlobal (Punkt), 0) –

+5

Oder verwenden Sie einfach menu.exec (QCursor :: pos()) http://doc.trolltech.com/latest/ qmenu.html # exec – amree

+0

Das Kontextmenü kann über die Tastaturverknüpfung aufgerufen werden, so dass die Cursorposition nicht immer korrekt ist. –

Verwandte Themen