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?
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.
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
Das Widget wird das Kontextmenü vorbereiten und anzeigen, Sie müssen lediglich die Aktionen triggered()
signals an die entsprechenden Handler anschließen
Ich weiß nicht, warum das Signal entfernt wurde, aber es ist immer noch QWidget
, so dass Sie immer überschreiben können
oder
%Vor%abhängig von den Richtlinieneinstellungen für das Widget im Kontextmenü.