Qt QListView - Kontextmenüs?

7

Ich versuche, ein Kontextmenü (Rechtsklick) zu einer Qt QListView hinzuzufügen. Ich sehe in Qt 3.3 "contextMenuRequested" (was ich verwenden könnte) - Ссылка . Allerdings kann ich eine solche Methode in Qt4 nicht sehen. Weiß jemand, wie man einem QListView ein Kontextmenü hinzufügt?

    
QLatvia 19.05.2010, 21:38
quelle

3 Antworten

17

Abhängig davon, wie Sie die ContextMenuPolicy in QWidget eingerichtet haben habe ein paar Optionen.

Wenn Sie Qt::DefaultContextMenu festgelegt haben, überschreiben Sie einfach die contextMenuEvent(QContextMenuEvent*) protected-Funktion in QWidget . Ich glaube, das ist der Standard.

Wenn Sie es auf Qt::ActionsContextMenu eingestellt haben, fügen Sie einfach alle Ihre Aktionen zu Ihrem Widget hinzu und lassen Sie das Qt-System das Kontextmenü anzeigen.

Oder wenn Sie es auf Qt::CustomContextMenu gesetzt haben, müssen Sie sich mit dem customContextMenuRequested() Signal verbinden und Ihren eigenen Kontextmenü-Handler implementieren.

Dies ist alles in der online verfügbaren ContextMenuPolicy Dokumentation dokumentiert.

    
Daemin 06.10.2011 05:53
quelle
6

Ich weiß nicht, was Sie erreichen möchten, aber Sie können jedem Widget problemlos ein Kontextmenü hinzufügen, indem Sie QWidget::AddAction(QAction*) mit den Aktionen aufrufen, die Sie Ihrem Kontextmenü hinzufügen möchten, und die Kontextmenü-Richtlinie festlegen

%Vor%

Das Widget wird das Kontextmenü vorbereiten und anzeigen, Sie müssen lediglich die Aktionen triggered() signals an die entsprechenden Handler anschließen

    
Harald Scheirich 20.05.2010 16:53
quelle
2

Ich weiß nicht, warum das Signal entfernt wurde, aber es ist immer noch QWidget , so dass Sie immer überschreiben können

%Vor%

oder

%Vor%

abhängig von den Richtlinieneinstellungen für das Widget im Kontextmenü.

    
Troubadour 19.05.2010 22:47
quelle

Tags und Links