默认情况下,在QGIS的“图层”面板中显示透明度滑块吗?


13

是否可以在“图层”窗口中默认显示透明度滑块,即在添加新图层之后直接显示,而不是通过图层属性手动为每个图层启用透明度滑块?

Answers:


11

QGIS- 开发人员论坛中简要提到了这一点,您需要在其中使用QgsMapLayer :: setCustomPropertylayer来为您的图层启用嵌入式小部件。然后,我们可以添加一个itemAdded事件,以便每添加一个图层,该事件就会自动与透明度小部件一起显示。

因此,您可以在Python控制台中使用类似以下的内容:

def transparency_slider():
    for layer in QgsMapLayerRegistry.instance().mapLayers().values():
        if layer.customProperty("embeddedWidgets/count") != 1 or layer.customProperty("embeddedWidgets/0/id") != u'transparency':
            layer.setCustomProperty("embeddedWidgets/count", 1)
            layer.setCustomProperty("embeddedWidgets/0/id", "transparency")         
        else:
            pass
        qgis.utils.iface.legendInterface().refreshLayerSymbology(layer)

# Connect "itemAdded" event to "transparency_slider" function
legend = qgis.utils.iface.legendInterface()
legend.itemAdded.connect(transparency_slider)

在WinGIS 64位的QGIS 2.18.3上进行了测试。


例:

在添加shapefile之前,将代码插入python控制台:

之前

结果:

后


这太妙了!如果要在没有透明度滑块的情况下引入后续矢量层,该如何关闭呢?
MartinHügi'17

1
@MartinHügi-您只需键入legend.itemAdded.disconnect(transparency_slider)python控制台即可;)
Joseph

@MartinHügi-非常欢迎,很高兴=)
约瑟夫

1
优秀的剧本!即使重新启动QGIS,也可以保持这种状态吗?还是必须在每次重新启动时执行脚本?
blabbath

@poellinf-如这篇文章中所述:在打开QGIS项目时是否可以运行python脚本?,您可以创建一个startup.py脚本(每次QGIS启动时运行该脚本)或一个项目宏(仅在您的项目上运行)。使用任何一种方法,您都需要添加import qgis; from qgis.core import QgsMapLayerRegistry在您的脚本中:)
约瑟夫

6

顾名思义,有一个名为Raster Transparency的插件,它将打开一个带有滑块的可停靠面板,用于更改所选栅格图层的透明度。

转到插件>管理和安装插件-找到并安装,新的关联图标将出现在工具栏上。

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.