Entfernen Sie "Speichern unter" aus dem QGIS-Kontextmenü mit PyQGIS [geschlossen]


9

Ich möchte eine vorhandene Option ("Speichern unter") aus dem Kontextmenü der QGIS-Ebene entfernen. Bisher habe ich festgestellt, dass ich eine neue Aktion in die hinzufügen LegendItemsoder diese vollständig mit neuen Optionen überschreiben möchte. Konnte aber keine Option finden, mit der ich eine vorhandene Standard-Kontextmenüoption entfernen könnte.

Was ich auch gesehen habe, ist, dass die menuProvider () -Methode verfügbar ist, aber mit dieser Methode keine Details erhalten konnte.

Wie kann ich die vorhandene Option "Speichern unter" aus dem Kontextmenü von QGIS entfernen?


Um alle Optionen zu entfernen und benutzerdefinierte Optionen hinzuzufügen, überprüfen Sie dies: gis.stackexchange.com/a/250170/49538
Fran Raga

Ich habe bereits gesehen, dass nur eine Aktion des vorhandenen Kontextmenüs entfernt werden soll.
Ahsan Mukhtar

Ich mache einen Entwurf, indem ich nur mit dem ersten Klick arbeite. Ich denke, dass keine Aktionen möglich sind, die gelöscht werden. Sie können dieses Kontextmenü replizieren, aber nicht alle Aktionen haben eine Python-Methode in QGIS Api
Fran Raga

1
Wie kann ich alle Standardaktionen replizieren?
Ahsan Mukhtar

Überprüfen Sie dieses Beispiel github.com/valheran/QDriller/blob/… und qgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html, aber nicht alle Aktionen haben Methode
Fran Raga

Antworten:


1

Sie müssen das aktuelle Kontextmenü mit Ihrer benutzerdefinierten Klasse überschreiben

Minimaler Beispielcode zum Entfernen der Option " Exportieren "

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

Menü "Einstellungen" => "Schnittstellenanpassung" im Menü / mProjectMenu deaktivieren mActionSaveProjectAs


1
Das ist eine Option, um das QGIS-Projekt zu deaktivieren, aber nicht die Ebene, oder?
Ahsan Mukhtar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.