¿Agregar un nuevo elemento de menú a la aplicación QGIS Desktop?

14

Necesito agregar un nuevo elemento de menú al menú de nivel superior de QGIS Desktop (2.7.0); Es decir, estará en el mismo nivel que "Proyecto", "Editar", "Ver", "Capa", etc.

Hasta donde sé, hay una manera bastante agradable de cómo ocultar elementos del menú (Configuración-> Personalización) Plus usando QgisInterface ( http://qgis.org/api/classQgisInterface.html ) Puedo agregar nuevos elementos a los menús ya definidos en QGIS ( addLayerMenu, addPluginToDatabaseMenu, etc.) desde mi código de complemento.

Pero necesito un nuevo elemento de menú en la capa superior (esto es requerido por el cliente).

Egor.Baykov
fuente

Respuestas:

22

Puede agregar un menú personalizado a la GUI de QGIS de esta manera:

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 puede ver en el fragmento de código anterior, está agregando un menú a la penúltima posición de la barra de menú, justo antes del Helpmenú.

ingrese la descripción de la imagen aquí

Luego, puede agregar una acción a su menú recién agregado de esta manera:

self.menu.addAction( self.action )

Puede que ya lo sepas, pero solo para aclararlo, dicha configuración de la GUI normalmente debería ubicarse en el initGui()método de tu complemento.

Germán Carrillo
fuente
1
Buena respuesta (¡a todos les encantan las capturas de pantalla!). Simplemente no olvide importar QMenu al principio ...
mozzbozz