Domyślnie wyświetlasz suwak przezroczystości w panelu Warstwy QGIS?

13

Czy można domyślnie wyświetlać suwak przezroczystości w oknie Warstwy, tj. Bezpośrednio po dodaniu nowej warstwy, zamiast konieczności ręcznego włączania dla każdej warstwy za pomocą właściwości warstwy?

znak
źródło

Odpowiedzi:

11

Zostało to krótko wspomniane na forum QGIS - dla programistów, gdzie należy użyć QgsMapLayer :: setCustomPropertylayer, aby włączyć wbudowany widget dla swojej warstwy. Możemy następnie dodać itemAddedzdarzenie, aby za każdym razem, gdy dodawana była warstwa, była ona automatycznie wyświetlana z widżetem przezroczystości.

Możesz więc użyć czegoś takiego jak w konsoli 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)

Testowany na QGIS 2.18.3 dla Win7 64-bit.


Przykład:

Wstawianie kodu do konsoli Pythona i przed dodaniem plików kształtów:

Przed

Wynik:

Po

Joseph
źródło
To fantastycznie! Jak to wyłączyć, jeśli chcesz wprowadzić kolejne warstwy wektorowe bez suwaka przezroczystości?
Martin Hügi,
1
@ MartinHügi - Możesz po prostu wpisać legend.itemAdded.disconnect(transparency_slider)w konsoli python;)
Joseph
@ MartinHügi - Bardzo mile widziane, cieszę się, że tak =)
Joseph
1
Doskonały scenariusz! Czy istnieje sposób, aby to utrzymać nawet podczas ponownego uruchamiania QGIS, czy też musisz wykonywać skrypt przy każdym ponownym uruchomieniu?
blabbath
@poellinf - Jak opisano w tym poście: Czy istnieje sposób na uruchomienie skryptu python podczas otwierania projektu QGIS? , możesz utworzyć skrypt startup.py (który uruchamia skrypt przy każdym uruchomieniu QGIS) lub utworzyć makro projektu (które działa tylko w twoim projekcie). Używając jednej z metod, musisz dodać import qgis; from qgis.core import QgsMapLayerRegistryw twoim skrypcie :)
Joseph
6

Istnieje wtyczka o nazwie Przezroczystość rastrowa, która jak sama nazwa wskazuje, otworzy dokowalny panel z suwakami do zmiany przezroczystości wybranej warstwy rastrowej.

Przejdź do Wtyczki> Zarządzaj i instaluj wtyczki - znajdź i zainstaluj, nowa powiązana ikona pojawi się na paskach narzędzi.

Martin Hügi
źródło