Czy dodajesz nowy element menu do aplikacji QGIS Desktop?

14

Muszę dodać nową pozycję menu do menu najwyższego poziomu QGIS Desktop (2.7.0); Oznacza to, że będzie on na tym samym poziomie co „Projekt”, „Edycja”, „Widok”, „Warstwa” itp.

O ile mi wiadomo, istnieje całkiem niezły sposób, w jaki sposób ukryć elementy menu (Ustawienia-> Dostosowanie) Plus za pomocą QgisInterface ( http://qgis.org/api/classQgisInterface.html ) Mogę dodawać nowe elementy do menu już zdefiniowanych w QGIS ( addLayerMenu, addPluginToDatabaseMenu itp.) z mojego kodu wtyczki.

Ale potrzebuję nowego elementu menu na górnej warstwie (jest to wymagane od klienta).

Egor.Baykov
źródło

Odpowiedzi:

22

Możesz dodać niestandardowe menu do GUI QGIS w ten sposób:

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 )

Jak widać powyżej we fragmencie kodu, dodajesz menu do drugiej do ostatniej pozycji paska menu, tuż przed Helpmenu.

wprowadź opis zdjęcia tutaj

Następnie możesz dodać akcję do nowo dodanego menu w ten sposób:

self.menu.addAction( self.action )

Być może już wiesz, ale żeby to wyjaśnić, taka konfiguracja GUI powinna zwykle znajdować się w initGui()metodzie Twojej wtyczki.

Germán Carrillo
źródło
1
Dobra odpowiedź (wszyscy uwielbiają zrzuty ekranu!). Tylko nie zapomnij zaimportować QMenu na początku ...
mozzbozz