Answers:
在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控制台:
结果:
legend.itemAdded.disconnect(transparency_slider)
python控制台即可;)
import qgis
; from qgis.core import QgsMapLayerRegistry
在您的脚本中:)