QGIS의 레이어 패널에 기본적으로 투명도 슬라이더가 표시됩니까?


13

레이어 창에 기본적으로 투명도 슬라이더를 표시 할 수 있습니까 (예 : 레이어 속성을 통해 각 레이어를 수동으로 활성화하는 대신 새 레이어를 추가 한 직후)?

답변:


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)

Win7 64 비트 용 QGIS 2.18.3에서 테스트되었습니다.


예:

파이썬 콘솔에 코드를 삽입하고 shapefile을 추가하기 전에 :

전에

결과:

후


환상적입니다! 그런 다음 투명도 슬라이더없이 후속 벡터 레이어를 가져 오려면 어떻게 해제합니까?
Martin Hügi

1
@ MartinHügi- legend.itemAdded.disconnect(transparency_slider)파이썬 콘솔에 입력 하면됩니다.)
Joseph

@ MartinHügi-가장 환영합니다. 기뻐합니다 =)
Joseph

1
훌륭한 대본! QGIS를 재시작 할 때에도이를 유지하는 방법이 있습니까? 아니면 재시작 할 때마다 스크립트를 수행해야합니까?
blabbath

@poellinf-이 글에서 설명한 바와 같이 : QGIS 프로젝트를 열 때 파이썬 스크립트를 실행하는 방법이 있습니까? QGIS가 시작될 때마다 스크립트를 실행 하는 startup.py 스크립트를 만들거나 프로젝트에서만 실행되는 프로젝트 매크로를 만들 수 있습니다. 두 가지 방법 중 하나를 사용하여 추가해야합니다 import qgis. from qgis.core import QgsMapLayerRegistry당신의 스크립트에서 :)
Joseph Joseph

6

이름에서 알 수 있듯이 선택한 래스터 레이어의 투명도를 변경하기 위해 슬라이더가있는 고정 가능한 패널을 여는 래스터 투명도라는 플러그인이 있습니다.

플러그인> 플러그인 관리 및 설치-찾아서 설치로 이동하면 툴바에 새로운 관련 아이콘이 나타납니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.