Transparenzregler standardmäßig im Ebenenbedienfeld von QGIS anzeigen?

13

Ist es möglich, einen Transparenzregler standardmäßig im Ebenenfenster anzuzeigen, dh direkt nach dem Hinzufügen einer neuen Ebene, anstatt ihn für jede Ebene manuell über Ebeneneigenschaften zu aktivieren?

Kennzeichen
quelle

Antworten:

11

Dies wurde im QGIS - Entwicklerforum kurz erwähnt, in dem Sie QgsMapLayer :: setCustomPropertylayer verwenden müssen , um das eingebettete Widget für Ihre Ebene zu aktivieren. Wir können dann ein itemAddedEreignis hinzufügen , sodass es beim Hinzufügen einer Ebene automatisch mit dem Transparenz-Widget angezeigt wird.

Sie könnten also in der Python-Konsole Folgendes verwenden :

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)

Getestet unter QGIS 2.18.3 für Win7 64-Bit.


Beispiel:

Einfügen von Code in die Python-Konsole und vor dem Hinzufügen von Shapefiles:

Vor

Ergebnis:

Nach

Joseph
quelle
Das ist fantastisch! Wie schalten Sie das dann aus, wenn Sie nachfolgende Vektorebenen ohne den Transparenz-Schieberegler einfügen möchten?
Martin Hügi
1
@ MartinHügi - Sie können einfach legend.itemAdded.disconnect(transparency_slider)die Python-Konsole eingeben ;)
Joseph
@ MartinHügi - Sehr willkommen, ich bin froh, dass es so ist =)
Joseph
1
Hervorragendes Drehbuch! Gibt es eine Möglichkeit, dies auch beim Neustart von QGIS beizubehalten, oder müssen Sie das Skript bei jedem Neustart ausführen?
Geschwätz
@poellinf - Wie in diesem Beitrag beschrieben: Gibt es eine Möglichkeit, beim Öffnen eines QGIS-Projekts ein Python-Skript auszuführen? Sie können entweder ein startup.py- Skript erstellen (das bei jedem Start von QGIS ausgeführt wird) oder ein Projektmakro erstellen (das nur für Ihr Projekt ausgeführt wird). Bei beiden Methoden müssen Sie hinzufügen import qgis; from qgis.core import QgsMapLayerRegistryin Ihrem Skript :)
Joseph
6

Es gibt ein Plugin namens Raster-Transparenz, das, wie der Name schon sagt, ein andockbares Bedienfeld mit Schiebereglern zum Ändern der Transparenz einer ausgewählten Rasterebene öffnet.

Gehe zu Plugins> Plugins verwalten und installieren - Finde es und installiere. Ein neues Symbol wird in deinen Symbolleisten angezeigt.

Martin Hügi
quelle