Hinzufügen eines neuen Menüelements zur QGIS Desktop-App?

14

Ich muss dem Hauptmenü von QGIS Desktop (2.7.0) ein neues Menüelement hinzufügen. Dh es soll auf der gleichen Ebene sein wie "Projekt", "Bearbeiten", "Ansicht", "Ebene" usw.

Soweit ich weiß, gibt es eine nette Möglichkeit, wie Sie Menüelemente (Einstellungen-> Anpassung) ausblenden und mithilfe von QgisInterface ( http://qgis.org/api/classQgisInterface.html ) neue Elemente zu bereits in QGIS definierten Menüs hinzufügen können ( addLayerMenu, addPluginToDatabaseMenu etc) aus meinem Plugin-Code.

Aber ich brauche einen neuen Menüpunkt auf der obersten Ebene (dies ist eine Anforderung des Kunden).

Egor.Baykov
quelle

Antworten:

22

Sie können der QGIS-GUI folgendermaßen ein benutzerdefiniertes Menü hinzufügen:

self.menu = QMenu( "&My tools", self.iface.mainWindow().menuBar() )
actions = self.iface.mainWindow().menuBar().actions()
lastAction = actions[-1]
self.iface.mainWindow().menuBar().insertMenu( lastAction, self.menu )

Wie Sie im obigen Code-Snippet sehen können, fügen Sie ein Menü an der vorletzten Stelle der Menüleiste direkt vor dem HelpMenü hinzu.

Bildbeschreibung hier eingeben

Anschließend können Sie Ihrem neu hinzugefügten Menü auf folgende Weise eine Aktion hinzufügen:

self.menu.addAction( self.action )

Möglicherweise wissen Sie bereits, aber um dies zu verdeutlichen, sollte sich eine solche GUI-Konfiguration normalerweise in der initGui()Methode Ihres Plugins befinden.

Germán Carrillo
quelle
1
Schöne Antwort (jeder liebt Screenshots!). Vergiss nur nicht, QMenu zu Beginn zu importieren ...
mozzbozz