Удалите «Сохранить как» из контекстного меню QGIS с помощью PyQGIS [закрыто]

9

Я хочу удалить существующую опцию («Сохранить как») из контекстного меню слоя QGIS, что я обнаружил до сих пор, чтобы добавить новое действие LegendItemsили полностью перезаписать новыми опциями. Но не смог найти ни одного варианта, используя который я смог бы удалить существующий вариант контекстного меню по умолчанию.

Что я также видел, что есть метод menuProvider () , но не смог получить какие-либо подробности с этим методом.

Как удалить существующую опцию «Сохранить как» из контекстного меню QGIS?

Ахсан Мухтар
источник
для удаления всех опций и добавления пользовательских опций отметьте это: gis.stackexchange.com/a/250170/49538
Фрэн Рага
Я уже видел, что я ищу, чтобы удалить только одно действие из существующего контекстного меню.
Ахсан Мухтар
Я делаю черновик, работая только первым щелчком мыши, я думаю, что любые действия невозможно удалить. Вы можете повторить это контекстное меню, но не все действия имеют метод python в QGIS Api
Fran Raga
1
Как я могу повторить все действия по умолчанию?
Ахсан Мухтар
Проверьте этот пример github.com/valheran/QDriller/blob/… и qgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html, но не у всех действий есть метод
Fran Raga

Ответы:

1

Вам нужно переопределить текущее контекстное меню, используя ваш собственный класс

Минимальный пример кода для удаления опции « Экспорт »

from qgis.gui import QgsLayerTreeViewMenuProvider

ltv = iface.layerTreeView()
mp=ltv.menuProvider()
cm = mp.createContextMenu()

for action in cm.actions():
    # Need text value ,this object not have ObjectName
    if action.text() == "Exportar":
        cm.removeAction(action);
    #print (action.objectName())

class CustomMenuProvider(QgsLayerTreeViewMenuProvider):

  def __init__(self, view, actions):
    QgsLayerTreeViewMenuProvider.__init__(self)
    self.view = view
    self.defaultActions = actions

  def createContextMenu(self):
    if not self.view.currentLayer():
      return None
    m = QMenu()
    m.addActions(self.defaultActions)
    return m


provider = CustomMenuProvider(ltv, cm.actions())
ltv.setMenuProvider(provider)
Фрэн Рага
источник
-1

Меню «Настройки» => «Настройка интерфейса» в меню / mProjectMenu отключить mActionSaveProjectAs

Кролик
источник
1
Это вариант отключения проекта QGIS, но не слоя, не так ли?
Ахсан Мухтар