Afficher le curseur de transparence par défaut dans le panneau Calques de QGIS?

13

Est-il possible d'avoir un curseur de transparence affiché par défaut dans la fenêtre Calque, c'est-à-dire directement après l'ajout d'un nouveau calque, au lieu de l'activer manuellement pour chaque calque via les propriétés de calque?

marque
la source

Réponses:

11

Cela a été brièvement mentionné dans QGIS - Forum des développeurs où vous devez utiliser QgsMapLayer :: setCustomPropertylayer pour activer le widget intégré pour votre couche. Nous pouvons ensuite ajouter un itemAddedévénement afin que chaque fois qu'un calque est ajouté, il sera automatiquement affiché avec le widget de transparence.

Vous pouvez donc utiliser quelque chose comme ce qui suit dans la 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)

Testé sur QGIS 2.18.3 pour Win7 64 bits.


Exemple:

Insertion de code dans la console python et avant d'ajouter des fichiers de formes:

Avant

Résultat:

Après

Joseph
la source
C'est fantastique! Comment désactivez-vous ensuite cette option si vous souhaitez insérer des couches vectorielles ultérieures sans le curseur de transparence?
Martin Hügi
1
@ MartinHügi - Vous pouvez simplement taper legend.itemAdded.disconnect(transparency_slider)dans la console python;)
Joseph
@ MartinHügi - Très bienvenu, content que ce soit =)
Joseph
1
Excellent script! Existe-t-il un moyen de conserver cela même lors du redémarrage de QGIS ou devez-vous exécuter le script à chaque redémarrage?
blabbath
@poellinf - Comme décrit dans cet article: existe-t-il un moyen d'exécuter un script python à l'ouverture d'un projet QGIS? , vous pouvez créer un script startup.py (qui exécute le script à chaque démarrage de QGIS) ou créer une macro de projet (qui ne s'exécute que sur votre projet). En utilisant l'une ou l'autre méthode, vous devrez ajouter import qgis; from qgis.core import QgsMapLayerRegistrydans votre script :)
Joseph
6

Il existe un plugin appelé Transparence raster qui, comme son nom l'indique, ouvrira un panneau ancrable avec des curseurs pour changer la transparence d'une couche raster sélectionnée.

Allez dans Plugins> Gérer et installer les plugins - Trouvez-le et installez, une nouvelle icône associée apparaîtra sur vos barres d'outils.

Martin Hügi
la source