Добавление нового пункта меню в приложение QGIS Desktop?

14

Мне нужно добавить новый пункт меню в меню верхнего уровня QGIS Desktop (2.7.0); Т.е. он должен быть на том же уровне, что и «Проект», «Редактировать», «Вид», «Слой» и т. Д.

Насколько я знаю, есть довольно хороший способ, как скрыть пункты меню (Настройки-> Настройка), а также с помощью QgisInterface ( http://qgis.org/api/classQgisInterface.html ). Я могу добавлять новые элементы в меню, уже определенные в QGIS ( addLayerMenu, addPluginToDatabaseMenu и т. д.) из кода моего плагина.

Но мне нужен новый пункт меню на верхнем слое (это требование от клиента).

Egor.Baykov
источник

Ответы:

22

Вы можете добавить пользовательское меню в графический интерфейс QGIS следующим образом:

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меню.

введите описание изображения здесь

Затем вы можете добавить действие в только что добавленное меню следующим образом:

self.menu.addAction( self.action )

Вы, возможно, уже знаете, но просто чтобы прояснить, такая конфигурация GUI должна обычно находиться в initGui()методе вашего плагина.

Герман Каррильо
источник
1
Хороший ответ (все любят скриншоты!). Только не забудьте импортировать QMenu в начале ...
mozzbozz