Відображення повзунка прозорості за замовчуванням на панелі шарів QGIS?


13

Чи можливий показ повзунка прозорості за замовчуванням у вікні шару, тобто безпосередньо після додавання нового шару, замість того, щоб він ввімкнув для кожного шару вручну через властивості шару?

Відповіді:


11

Про це коротко згадувалося на форумі розробників QGIS, де вам потрібно використовувати QgsMapLayer :: setCustomPropertylayer, щоб увімкнути вбудований віджет для вашого шару. Потім ми можемо додати itemAddedподію, щоб кожен раз, коли доданий шар, він автоматично відображався за допомогою віджета прозорості.

Отже, ви можете використовувати щось подібне на консолі 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)

Тестовано на QGIS 2.18.3 для 64-розрядної версії Win7.


Приклад:

Вставлення коду в консоль python та перед додаванням форм-файлів:

До цього

Результат:

Після


Це фантастично! Як потім вимкнути це, якщо ви хочете ввести наступні векторні шари без повзунка прозорості?
Мартін Хюгі

1
@ MartinHügi - Ви можете просто ввести legend.itemAdded.disconnect(transparency_slider)консоль пітона;)
Йосип

@ MartinHügi - Ласкаво просимо, радий це =)
Йосип

1
Відмінний сценарій! Чи є спосіб зберегти це навіть при перезапуску QGIS або вам доведеться виконувати скрипт при кожному перезапуску?
гуляння

@poellinf - Як описано в цьому дописі: Чи є спосіб запустити сценарій python при відкритті проекту QGIS? ви можете зробити сценарій startup.py (який запускає сценарій кожного разу, коли запускається QGIS) або зробити макрос проекту (який працює лише у вашому проекті). Використовуючи будь-який метод, вам потрібно буде додати import qgis; from qgis.core import QgsMapLayerRegistryза вашим сценарієм :)
Йосип

6

Існує плагін під назвою «Растрова прозорість», який, як випливає з назви, відкриє док-панель із повзунками для зміни прозорості вибраного растрового шару.

Перейдіть до Плагіни> Керування та встановлення плагінів - Знайдіть і встановіть, на панелі інструментів з’явиться новий пов’язаний значок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.