Comment masquer / afficher QGisVectorLayer à partir du code Python?

11

Une fois le calque créé, comment le cacher / l'afficher? Je peux activer / désactiver le rendu d'une couche spécifique en cochant la case via QGIS, mais je dois le faire par programmation à partir du code python.

Comment puis-je afficher / masquer (pas supprimer) une étiquette du code python?

Je cherche quelque chose comme:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()
Heisenbug
la source
Je suis content que vous ayez changé le nom de la variable vl(à partir de l'exemple de code similaire dans une question précédente) en aLayer. Il est facile de confondre la lettre minuscule lavec le chiffre 1.
andytilia
@andytilia: vous avez raison. J'ai aussi édité les anciennes questions.
Heisenbug

Réponses:

8

Vous pouvez contrôler la visibilité du calque à travers l'objet de légende. Le voici, en utilisant votre exemple de code ci-dessus:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
legend = self.legendInterface()  # access the legend
legend.setLayerVisible(aLayer, False)  # hide the layer
# do something else
legend.setLayerVisible(aLayer, True)  # show the layer

# maybe later I want to check if the layer is visible
print legend.isLayerVisible(aLayer)

Voici la documentation pour legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Bonne chance!

andytilia
la source