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).

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.


1
Schöne Antwort (jeder liebt Screenshots!). Vergiss nur nicht, QMenu zu Beginn zu importieren ...
mozzbozz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.