เป็นไปได้หรือไม่ที่จะมีแถบเลื่อนโปร่งใสที่แสดงโดยค่าเริ่มต้นในหน้าต่างเลเยอร์เช่นโดยตรงหลังจากเพิ่มเลเยอร์ใหม่แทนที่จะให้มันเปิดใช้งานสำหรับแต่ละเลเยอร์ด้วยตนเองผ่านคุณสมบัติเลเยอร์?
เป็นไปได้หรือไม่ที่จะมีแถบเลื่อนโปร่งใสที่แสดงโดยค่าเริ่มต้นในหน้าต่างเลเยอร์เช่นโดยตรงหลังจากเพิ่มเลเยอร์ใหม่แทนที่จะให้มันเปิดใช้งานสำหรับแต่ละเลเยอร์ด้วยตนเองผ่านคุณสมบัติเลเยอร์?
คำตอบ:
นี่ถูกกล่าวถึงสั้น ๆ ใน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:
ผลลัพธ์:
legend.itemAdded.disconnect(transparency_slider)
ในคอนโซล python;)
import qgis
; from qgis.core import QgsMapLayerRegistry
ในสคริปต์ของคุณ :)
มีปลั๊กอินที่เรียกว่า Raster Transparency ซึ่งเป็นชื่อที่แนะนำจะเปิดแผง dockable พร้อมแถบเลื่อนสำหรับเปลี่ยนความโปร่งใสของเลเยอร์แรสเตอร์ที่เลือก
ไปที่ปลั๊กอิน> จัดการและติดตั้งปลั๊กอิน - ค้นหาและติดตั้งไอคอนที่เกี่ยวข้องใหม่จะปรากฏบนแถบเครื่องมือของคุณ