Hiển thị thanh trượt trong suốt theo mặc định trong Bảng điều khiển của QGIS?


13

Có thể có một thanh trượt trong suốt được hiển thị theo mặc định trong cửa sổ Lớp, tức là trực tiếp sau khi thêm một lớp mới, thay vì để nó bật cho từng lớp một cách thủ công thông qua các thuộc tính lớp?

Câu trả lời:


11

Điều này đã được đề cập ngắn gọn trong QGIS - Diễn đàn dành cho nhà phát triển nơi bạn cần sử dụng QssMapLayer :: setCustomPropertylayer để bật tiện ích nhúng cho lớp của mình. Sau đó chúng ta có thể thêm một itemAddedsự kiện để bất cứ khi nào một lớp được thêm vào, nó sẽ tự động được hiển thị với tiện ích trong suốt.

Vì vậy, bạn có thể sử dụng một cái gì đó như sau trong Bảng điều khiển 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)

Đã thử nghiệm trên QGIS 2.18.3 cho Win7 64 bit.


Thí dụ:

Chèn mã vào bảng điều khiển python và trước khi thêm shapefiles:

Trước

Kết quả:

Sau


Điều đó thật tuyệt! Làm thế nào để bạn tắt nó đi nếu bạn muốn đưa vào các lớp vectơ tiếp theo mà không có thanh trượt trong suốt?
Martin Hügi 17/03/2017

1
@ MartinHügi - Bạn chỉ cần gõ legend.itemAdded.disconnect(transparency_slider)vào bảng điều khiển python;)
Joseph

@ MartinHügi - Rất hoan nghênh, rất vui vì điều đó =)
Joseph

1
Kịch bản xuất sắc! Có cách nào để giữ điều này ngay cả khi khởi động lại QGIS hay bạn phải thực hiện tập lệnh mỗi lần khởi động lại?
blabbath

@poellinf - Như được mô tả trong bài đăng này: Có cách nào để chạy một kịch bản python khi mở một dự án QGIS không? , bạn có thể tạo tập lệnh startup.txt (chạy tập lệnh mỗi khi QGIS khởi động) hoặc tạo macro dự án (chỉ chạy trên dự án của bạn). Sử dụng một trong hai phương pháp, bạn sẽ cần thêm import qgis; from qgis.core import QgsMapLayerRegistrytrong kịch bản của bạn :)
Joseph

6

Có một plugin có tên Raster Trans minh bạch, đúng như tên gọi, sẽ mở một bảng điều khiển có thể gắn được với các thanh trượt để thay đổi độ trong suốt của lớp raster đã chọn.

Chuyển đến Plugin> Quản lý và cài đặt plugin - Tìm và cài đặt, một biểu tượng liên kết mới sẽ xuất hiện trên thanh công cụ của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.