Menampilkan slider transparansi secara default di Layers Panel of QGIS?


13

Apakah mungkin untuk memiliki slider transparansi yang ditampilkan secara default di jendela Layer, yaitu langsung setelah menambahkan layer baru, daripada harus mengaktifkan untuk setiap lapisan secara manual melalui properti layer?

Jawaban:


11

Ini disebutkan secara singkat dalam forum QGIS - Pengembang di mana Anda perlu menggunakan QgsMapLayer :: setCustomPropertylayer untuk mengaktifkan widget tertanam untuk lapisan Anda. Kami kemudian dapat menambahkan itemAddedacara sehingga setiap kali layer ditambahkan, itu akan secara otomatis ditampilkan dengan widget transparansi.

Jadi Anda bisa menggunakan sesuatu seperti berikut ini di Python Console :

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)

Diuji pada QGIS 2.18.3 untuk Win7 64-bit.


Contoh:

Memasukkan kode ke konsol python dan sebelum menambahkan shapefile:

Sebelum

Hasil:

Setelah


Itu luar biasa! Bagaimana Anda kemudian mematikannya jika Anda ingin membawa lapisan vektor berikutnya tanpa slider transparansi?
Martin Hügi

1
@ MartinHügi - Anda cukup mengetikkan legend.itemAdded.disconnect(transparency_slider)konsol python;)
Joseph

@ MartinHügi - Sama-sama, sangat senang =)
Joseph

1
Script yang luar biasa! Apakah ada cara untuk menjaga ini bahkan ketika me-restart QGIS atau Anda harus melakukan script pada setiap restart?
blabbath

@poellinf - Seperti dijelaskan dalam posting ini: Apakah ada cara untuk menjalankan skrip python saat membuka proyek QGIS? , Anda dapat membuat skrip startup.py (yang menjalankan skrip setiap kali QGIS dijalankan) atau membuat makro proyek (yang hanya berjalan pada proyek Anda). Dengan menggunakan metode mana pun, Anda perlu menambahkan import qgis; from qgis.core import QgsMapLayerRegistrydalam naskah Anda :)
Joseph

6

Ada sebuah plugin bernama Raster Transparency, yang seperti namanya, akan membuka panel dockable dengan slider untuk mengubah transparansi dari layer raster yang dipilih.

Buka Plugin> Kelola dan instal plugin - Temukan dan pasang, ikon terkait baru akan muncul di bilah alat Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.