Remova “Salvar como” do menu de contexto QGIS usando PyQGIS [fechado]

9

Quero remover uma opção existente ("Salvar como") do menu de contexto da camada QGIS, o que encontrei até agora é adicionar uma nova ação LegendItemsou substituir completamente por novas opções. Mas não consegui encontrar nenhuma opção usando isso, eu seria capaz de remover uma opção de menu de contexto padrão existente.

O que também vi é que existe o método menuProvider () disponível, mas não foi possível obter detalhes com esse método.

Como posso remover a opção "Salvar como" existente no menu de contexto do QGIS?

Ahsan Mukhtar
fonte
para remover todas as opções e adicionar opções personalizadas verificar isso: gis.stackexchange.com/a/250170/49538
Fran Raga
Eu já vi isso, o que estou procurando é remover apenas uma ação do menu de contexto existente.
Ahsan Mukhtar
Eu faço um rascunho apenas trabalhando no primeiro clique, acho que nenhuma ação é possível excluída. Você pode replicar esse contextMenu, mas nem todas as ações têm o método python no QGIS Api
Fran Raga
11
Como posso replicar todas as ações padrão?
Ahsan Mukhtar
Confira este exemplo github.com/valheran/QDriller/blob/... e qgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html , mas não toda ação tem método
Fran Raga

Respostas:

1

Você precisa substituir o menu de contexto atual, usando sua classe personalizada

Código de amostra mínimo para remover a opção " Exportar "

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)
Fran Raga
fonte
-1

Menu "Configurações" => "Personalização da interface" nos menus / mProjectMenu desativar mActionSaveProjectAs

O Coelho
fonte
11
Essa é a opção para desativar o projeto do QGIS, mas não a camada, é isso?
Ahsan Mukhtar