Adicionando novo item de menu ao aplicativo QGIS Desktop?

14

Eu preciso adicionar um novo item de menu ao menu de nível superior do QGIS Desktop (2.7.0); Ou seja, deve estar no mesmo nível que "Projeto", "Editar", "Visualizar", "Camada" etc.

Até onde eu sei, há uma maneira bem legal de ocultar os itens de menu (Configurações-> Personalização) Além disso, usando QgisInterface ( http://qgis.org/api/classQgisInterface.html ) Eu posso adicionar novos itens aos Menus já definidos no QGIS ( addLayerMenu, addPluginToDatabaseMenu etc) do meu código de plug-in.

Mas preciso de um novo item de menu na camada superior (isso é necessário do cliente).

Egor.Baykov
fonte

Respostas:

22

Você pode adicionar um menu personalizado à QGIS GUI da seguinte maneira:

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 )

Como você pode ver no snippet de código acima, você está adicionando um menu à penúltima posição da barra de menus, logo antes do Helpmenu.

insira a descrição da imagem aqui

Em seguida, você pode adicionar uma ação ao seu menu recém-adicionado desta maneira:

self.menu.addAction( self.action )

Você já deve saber, mas apenas para deixar claro, essa configuração da GUI normalmente deve estar localizada no initGui()método do seu plug-in.

Germán Carrillo
fonte
1
Boa resposta (todo mundo adora screenshots!). Só não se esqueça de importar QMenu no início ...
mozzbozz