Mostrando o controle deslizante de transparência por padrão no Painel de camadas do QGIS?

13

É possível ter um controle deslizante de transparência mostrado por padrão na janela Camada, ou seja, diretamente após adicionar uma nova camada, em vez de permitir que cada camada seja ativada manualmente através das propriedades da camada?

Marca
fonte

Respostas:

11

Isso foi mencionado brevemente no fórum QGIS - Developer, onde você precisa usar QgsMapLayer :: setCustomPropertylayer para ativar o widget incorporado para sua camada. Podemos então adicionar um itemAddedevento para que, sempre que uma camada for adicionada, ela seja mostrada automaticamente com o widget de transparência.

Portanto, você pode usar algo como o seguinte no console 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)

Testado no QGIS 2.18.3 para Win7 de 64 bits.


Exemplo:

Inserindo código no console python e antes de adicionar shapefiles:

Antes

Resultado:

Depois de

Joseph
fonte
Isso é fantástico! Como você desativa essa opção se deseja inserir camadas vetoriais subseqüentes sem o controle deslizante de transparência?
Martin Hügi
1
@ MartinHügi - Você pode simplesmente digitar legend.itemAdded.disconnect(transparency_slider)no console python;)
Joseph
@ MartinHügi - Mais de boas-vindas, feliz por ele faz =)
Joseph
1
Excelente roteiro! Existe uma maneira de manter isso mesmo ao reiniciar o QGIS ou você precisa executar o script em todas as reinicializações?
blabbath
@poellinf - Conforme descrito neste post: Existe uma maneira de executar um script python ao abrir um projeto QGIS? , você pode criar um script startup.py (que executa o script toda vez que o QGIS é iniciado) ou criar uma macro de projeto (que é executada apenas no seu projeto). Usando qualquer método, você precisará adicionar import qgis; from qgis.core import QgsMapLayerRegistryem seu script :)
Joseph
6

Existe um plugin chamado Transparência de varredura, que, como o nome sugere, abrirá um painel acoplável com controles deslizantes para alterar a transparência de uma camada de varredura selecionada.

Vá para Plug-ins> Gerenciar e instalar plug-ins - Encontre e instale, um novo ícone associado aparecerá na sua barra de ferramentas.

Martin Hügi
fonte