QGIS'in Katmanlar Panelinde varsayılan olarak saydamlık kaydırıcısı gösteriliyor mu?


13

Katman penceresinde, varsayılan olarak her katman için katman özellikleri aracılığıyla manuel olarak etkinleştirilmesini sağlamak yerine, yeni bir katman ekledikten hemen sonra bir saydamlık kaydırıcısının gösterilmesi mümkün müdür?

Yanıtlar:


11

Bu, katmanınız için katıştırılmış widget'ı etkinleştirmek için QgsMapLayer :: setCustomPropertylayer kullanmanız gereken QGIS - Geliştirici forumunda kısaca belirtilmiştir . Daha sonra , bir katman eklendiğinde otomatik olarak saydamlık widget'ıyla gösterilmesi için bir etkinlik ekleyebiliriz .itemAdded

Böylece Python Konsolunda aşağıdakine benzer bir şey kullanabilirsiniz :

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-bit için QGIS 2.18.3'te test edildi.


Misal:

Python konsoluna ve şekil dosyaları eklemeden önce kod ekleme:

Önce

Sonuç:

Sonra


Bu harika! Daha sonra saydamlık kaydırıcısı olmadan sonraki vektör katmanlarını getirmek istiyorsanız bunu nasıl kapatabilirsiniz?
Martin Hügi

1
@ MartinHügi - Sadece legend.itemAdded.disconnect(transparency_slider)python konsolunda yazabilirsiniz ;)
Joseph

@ MartinHügi - En hoş geldiniz, sevindim =)
Joseph

1
Mükemmel senaryo! QGIS'i yeniden başlatırken bile bunu korumanın bir yolu var mı veya her yeniden başlatmada komut dosyasını gerçekleştirmek zorunda mısınız?
blabbath

@poellinf - Bu yayında açıklandığı gibi: QGIS projesi açarken bir python betiği çalıştırmanın bir yolu var mı? , bir startup.py komut dosyası (QGIS her başlatıldığında komut dosyasını çalıştırır) veya bir proje makrosu (yalnızca projenizde çalışır) oluşturabilirsiniz. Her iki yöntemi de kullanarak import qgis; from qgis.core import QgsMapLayerRegistrysenaryonuzda :)
Joseph

6

Raster Transparency adlı bir eklenti var, adından da anlaşılacağı gibi, seçilen bir raster katmanının saydamlığını değiştirmek için kaydırıcılarla yerleştirilebilir bir panel açacak.

Eklentiler> Eklentileri yönet ve yükle'ye gidin - Bulun ve yükleyin, araç çubuklarınızda yeni bir ilişkili simge görünecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.