Ajout d'un nouvel élément de menu à l'application QGIS Desktop?

14

J'ai besoin d'ajouter un nouvel élément de menu au menu de niveau supérieur de QGIS Desktop (2.7.0); C'est à dire qu'il doit être au même niveau que "Projet", "Edition", "Affichage", "Couche" etc.

Pour autant que je sache, il est assez agréable de masquer les éléments de menu (Paramètres-> Personnalisation) Plus en utilisant QgisInterface ( http://qgis.org/api/classQgisInterface.html ) Je peux ajouter de nouveaux éléments aux menus déjà définis dans QGIS ( addLayerMenu, addPluginToDatabaseMenu etc) à partir de mon code de plugin.

Mais j'ai besoin d'un nouvel élément de menu sur la couche supérieure (c'est la demande du client).

Egor.Baykov
la source

Réponses:

22

Vous pouvez ajouter un menu personnalisé à l'interface graphique QGIS de cette façon:

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 )

Comme vous pouvez le voir dans l'extrait de code ci-dessus, vous ajoutez un menu à l'avant-dernière position de la barre de menus, juste avant le Helpmenu.

entrez la description de l'image ici

Ensuite, vous pouvez ajouter une action à votre menu nouvellement ajouté de cette façon:

self.menu.addAction( self.action )

Vous le savez peut-être déjà, mais juste pour être clair, une telle configuration GUI devrait normalement être située dans la initGui()méthode de votre plugin.

Germán Carrillo
la source
1
Belle réponse (tout le monde aime les captures d'écran!). N'oubliez pas d'importer QMenu au début ...
mozzbozz