QGISデスクトップアプリに新しいメニュー項目を追加しますか?


14

QGIS Desktop(2.7.0)のトップレベルメニューに新しいメニュー項目を追加する必要があります。つまり、「プロジェクト」、「編集」、「表示」、「レイヤー」などと同じレベルになります。

私が知っている限り、QgisInterface(http://qgis.org/api/classQgisInterface.html)を使用してメニュー項目を非表示にする方法(設定->カスタマイズ)があり、QGISで既に定義されているメニューに新しい項目を追加できます(プラグインコードからaddLayerMenu、addPluginToDatabaseMenuなど)。

しかし、最上層に新しいメニュー項目が必要です(これは顧客の要求です)。

回答:


22

この方法で、カスタムメニューをQGIS GUIに追加できます。

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 )

上記のコードスニペットを見るとわかるように、Helpメニューの直前のメニューバーの最後から2番目の位置にメニューを追加しています。

ここに画像の説明を入力してください

次に、この方法で新しく追加したメニューにアクションを追加できます。

self.menu.addAction( self.action )

既に知っているかもしれませんが、明確にするために、このようなGUI設定は通常initGui()、プラグインのメソッドに配置する必要があります。


1
いい答えです(誰もがスクリーンショットが大好きです!)。最初にQMenuをインポートすることを忘れないでください
...-mozzbozz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.