แสดงแถบเลื่อนโปร่งใสตามค่าเริ่มต้นในแผงเลเยอร์ของ QGIS


13

เป็นไปได้หรือไม่ที่จะมีแถบเลื่อนโปร่งใสที่แสดงโดยค่าเริ่มต้นในหน้าต่างเลเยอร์เช่นโดยตรงหลังจากเพิ่มเลเยอร์ใหม่แทนที่จะให้มันเปิดใช้งานสำหรับแต่ละเลเยอร์ด้วยตนเองผ่านคุณสมบัติเลเยอร์?

คำตอบ:


11

นี่ถูกกล่าวถึงสั้น ๆ ในQGIS -ฟอรัมนักพัฒนาที่คุณต้องใช้QgsMapLayer :: setCustomPropertylayerเพื่อเปิดใช้งานวิดเจ็ตแบบฝังสำหรับเลเยอร์ของคุณ จากนั้นเราสามารถเพิ่มitemAddedกิจกรรมเพื่อให้เมื่อใดก็ตามที่มีการเพิ่มเลเยอร์มันจะถูกแสดงโดยอัตโนมัติด้วยวิดเจ็ตโปร่งใส

ดังนั้นคุณสามารถใช้สิ่งต่อไปนี้ใน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)

ทดสอบบน QGIS 2.18.3 สำหรับ Win7 64-bit


ตัวอย่าง:

การแทรกโค้ดลงในคอนโซลหลามและก่อนเพิ่ม Shapefiles:

ก่อน

ผลลัพธ์:

หลังจาก


มันอัศจรรย์มาก! จากนั้นคุณจะปิดได้อย่างไรหากคุณต้องการนำเลเยอร์เวกเตอร์ที่ตามมาโดยไม่มีแถบเลื่อนโปร่งใส
Martin Hügi

1
@ MartinHügi - คุณสามารถพิมพ์legend.itemAdded.disconnect(transparency_slider)ในคอนโซล python;)
Joseph

@ MartinHügi - ยินดีมากที่สุดดีใจที่มัน =)
โจเซฟ

1
สุดยอดสคริปต์! มีวิธีที่จะรักษาสิ่งนี้ไว้แม้เมื่อรีสตาร์ท QGIS หรือคุณต้องทำสคริปต์ในทุก ๆ การรีสตาร์ท?
ธรรมสวนะ

@poellinf - ตามที่อธิบายไว้ในโพสต์นี้: มีวิธีรันสคริปต์ python ในการเปิดโครงการ QGIS หรือไม่? คุณสามารถสร้างสคริปต์startup.py (ซึ่งเรียกใช้สคริปต์ทุกครั้งที่ QGIS เริ่มทำงาน) หรือสร้างแมโครโครงการ (ซึ่งเรียกใช้เฉพาะในโครงการของคุณ) โดยใช้วิธีการอย่างใดอย่างหนึ่งที่คุณจะต้องเพิ่มimport qgis; from qgis.core import QgsMapLayerRegistryในสคริปต์ของคุณ :)
โจเซฟ

6

มีปลั๊กอินที่เรียกว่า Raster Transparency ซึ่งเป็นชื่อที่แนะนำจะเปิดแผง dockable พร้อมแถบเลื่อนสำหรับเปลี่ยนความโปร่งใสของเลเยอร์แรสเตอร์ที่เลือก

ไปที่ปลั๊กอิน> จัดการและติดตั้งปลั๊กอิน - ค้นหาและติดตั้งไอคอนที่เกี่ยวข้องใหม่จะปรากฏบนแถบเครื่องมือของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.