Ответы:
Это было кратко упомянуто на 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)
Протестировано на QGIS 2.18.3 для 64-битной Win7.
Пример:
Вставка кода в консоль Python и перед добавлением шейп-файлов:
Результат:
legend.itemAdded.disconnect(transparency_slider)
в консоли Python;)
import qgis
; from qgis.core import QgsMapLayerRegistry
в вашем сценарии :)
Существует плагин Raster Transparency, который, как следует из названия, откроет закрепляемую панель с ползунками для изменения прозрачности выбранного растрового слоя.
Перейдите в раздел Плагины> Управление и установка плагинов - найдите и установите, на ваших панелях инструментов появится новый связанный значок.