Eliminar "Guardar como" del menú contextual de QGIS usando PyQGIS [cerrado]

9

Quiero eliminar una opción existente ("Guardar como") del menú contextual de la capa QGIS, lo que he encontrado hasta ahora es agregar una nueva acción LegendItemso sobrescribir completamente con nuevas opciones. Pero no pude encontrar ninguna opción usando eso, podría eliminar una opción de menú contextual predeterminada existente.

Lo que también he visto es que hay un método menuProvider () disponible, pero no se pudieron obtener detalles con este método.

¿Cómo puedo eliminar la opción existente "Guardar como" del menú contextual de QGIS?

Ahsan Mukhtar
fuente
para eliminar todas las opciones y agregar opciones personalizadas, verifique esto: gis.stackexchange.com/a/250170/49538
Fran Raga
Ya he visto eso, lo que estoy buscando es eliminar solo una acción del menú contextual existente.
Ahsan Mukhtar
Hago un borrador solo con el primer clic, creo que no se puede eliminar ninguna acción. Puede replicar este contexto Menú, pero no todas las acciones tienen el método python en QGIS Api
Fran Raga
1
¿Cómo puedo replicar todas las acciones predeterminadas?
Ahsan Mukhtar
Revise este ejemplo github.com/valheran/QDriller/blob/… y qgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html pero no todas las acciones tienen método
Fran Raga

Respuestas:

1

Debe anular el menú contextual actual, utilizando su clase personalizada

Código de muestra mínimo para eliminar la opción " 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
fuente
-1

Menú "Configuración" => "Personalización de interfaz" en los menús / mProjectMenu deshabilitar mActionSaveProjectAs

El conejo
fuente
1
Esa es la opción para deshabilitar el proyecto de QGIS, pero no la capa, ¿es eso?
Ahsan Mukhtar