Como ocultar / mostrar QGisVectorLayer do código Python?

11

Depois de criar uma camada, como posso ocultar / mostrá-la? Posso ativar / desativar a renderização de uma camada específica marcando a caixa de seleção através do QGIS, mas preciso fazer isso de forma programática a partir do código python.

Como posso mostrar / ocultar (não remover) um rótulo do código python?

Estou procurando algo como:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()
Heisenbug
fonte
Estou feliz que você alterou o nome da variável vl(do exemplo de código semelhante em uma pergunta anterior) para aLayer. É fácil confundir a letra minúscula lcom o dígito 1.
andytilia
@andytilia: você está certo. Também editei as perguntas antigas.
precisa saber é o seguinte

Respostas:

8

Você pode controlar a visibilidade da camada através do objeto de legenda. Aqui está, usando seu código de exemplo acima:

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)

Aqui está a documentação para legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Boa sorte!

andytilia
fonte