使用PyQGIS从QGIS上下文菜单中删除“另存为” [关闭]


9

我想从QGIS层的上下文菜单中删除一个现有选项(“另存为”),到目前为止,我发现的是在中添加新操作LegendItems,或用新选项完全覆盖。但是找不到使用该选项的任何选项,因此我可以删除现有的默认上下文菜单选项。

我还看到有可用的menuProvider()方法,但此方法无法获取任何详细信息。

如何从QGIS的上下文菜单中删除现有的“另存为”选项?


要删除所有选项并添加自定义选项,请检查以下内容:gis.stackexchange.com/a/250170/49538
Fran Raga

我已经看到,正在寻找的是仅删除现有上下文菜单中的一项操作。
Ahsan Mukhtar,

我做一个只工作草案第一次点击,我认为任何行动没有更多钞票deleted.You C和复制此文本菜单,但不是所有的行动都在QGIS阿比蟒蛇方法
弗兰拉格

1
如何复制所有默认操作?
Ahsan Mukhtar,

Answers:


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

Menus / mProjectMenu中的菜单“设置” =>“接口自定义”禁用mActionSaveProjectAs


1
那是禁用QGIS项目的选项,而不是层,不是吗?
Ahsan Mukhtar,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.