Hapus "Simpan Sebagai" dari Menu Konteks QGIS Menggunakan PyQGIS [ditutup]

9

Saya ingin menghapus opsi yang ada ("Save As") dari menu konteks layer QGIS, yang saya temukan sejauh ini adalah, untuk menambahkan tindakan baru di LegendItems, atau menimpa sepenuhnya dengan opsi baru. Tetapi tidak dapat menemukan opsi apa pun yang menggunakan itu saya akan dapat menghapus opsi menu Konteks standar yang ada.

Apa yang saya juga lihat ada metode menuProvider () , tetapi tidak bisa mendapatkan rincian dengan metode ini.

Bagaimana saya bisa menghapus opsi "Simpan Sebagai" yang ada dari menu konteks QGIS?

Ahsan Mukhtar
sumber
untuk menghapus semua opsi dan menambahkan opsi kustom, periksa ini: gis.stackexchange.com/a/250170/49538
Fran Raga
Saya sudah melihat bahwa, apa yang saya cari adalah menghapus hanya satu tindakan dari menu Konteks yang ada.
Ahsan Mukhtar
Saya membuat konsep dengan hanya bekerja dengan klik pertama, saya pikir tindakan apa pun tidak mungkin dihapus. Anda dapat meniru konteks ini, tapi tidak semua tindakan memiliki metode python di QGIS Api
Fran Raga
1
Bagaimana saya bisa meniru semua Tindakan default?
Ahsan Mukhtar
Lihat contoh ini github.com/valheran/QDriller/blob/… dan qgis.org/api/2.18/classQgsLayerTreeViewDefaultActions.html tetapi tidak semua tindakan memiliki metode
Fran Raga

Jawaban:

1

Anda perlu mengganti Menu konteks saat ini, menggunakan kelas khusus Anda

Kode sampel minimal untuk menghapus Opsi " Ekspor "

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
sumber
-1

Menu "Pengaturan" => "Kustomisasi Antarmuka" di Menu / mProjectMenu nonaktifkan mActionSaveProjectAs

Kelinci
sumber
1
Itu adalah opsi untuk menonaktifkan proyek QGIS, tetapi bukan layer, kan?
Ahsan Mukhtar