¿Muestra el control deslizante de transparencia de forma predeterminada en el Panel de capas de QGIS?

13

¿Es posible tener un control deslizante de transparencia que se muestra de forma predeterminada en la ventana Capa, es decir, directamente después de agregar una nueva capa, en lugar de tener que habilitarlo para cada capa manualmente a través de las propiedades de capa?

marca
fuente

Respuestas:

11

Esto se mencionó brevemente en QGIS - Foro de desarrolladores donde necesita usar QgsMapLayer :: setCustomPropertylayer para habilitar el widget incrustado para su capa. Luego podemos agregar un itemAddedevento para que cada vez que se agregue una capa, se muestre automáticamente con el widget de transparencia.

Entonces podría usar algo como lo siguiente en la Consola 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)

Probado en QGIS 2.18.3 para Win7 de 64 bits.


Ejemplo:

Insertar código en la consola de Python y antes de agregar shapefiles:

antes de

Resultado:

Después

José
fuente
¡Eso es fantástico! ¿Cómo puede desactivarlo si desea incorporar capas vectoriales posteriores sin el control deslizante de transparencia?
Martin Hügi
1
@ MartinHügi - Simplemente puede escribir legend.itemAdded.disconnect(transparency_slider)en la consola de Python;)
Joseph
@ MartinHügi - Muy bienvenido, me alegro de que sí =)
Joseph
1
Excelente guion! ¿Hay alguna forma de mantener esto incluso al reiniciar QGIS o tiene que ejecutar el script en cada reinicio?
blabbath
@poellinf - Como se describe en esta publicación: ¿Hay alguna forma de ejecutar un script de Python al abrir un proyecto QGIS? , puede crear un script startup.py (que ejecuta el script cada vez que se inicia QGIS) o crear una macro de proyecto (que se ejecuta solo en su proyecto). Usando cualquiera de los métodos, necesitará agregar import qgis; from qgis.core import QgsMapLayerRegistryen tu guión :)
Joseph
6

Hay un complemento llamado Transparencia de ráster que, como su nombre indica, abrirá un panel acoplable con controles deslizantes para cambiar la transparencia de una capa ráster seleccionada.

Vaya a Complementos> Administrar e instalar complementos: encuéntrelo e instálelo, aparecerá un nuevo icono asociado en sus barras de herramientas.

Martin Hügi
fuente