¿Cómo ocultar / mostrar QGisVectorLayer del código Python?

11

Una vez creada una capa, ¿cómo puedo ocultarla / mostrarla? Puedo habilitar / deshabilitar la representación de una capa específica seleccionando la casilla de verificación a través de QGIS, pero necesito hacerlo mediante programación desde el código de Python.

¿Cómo puedo mostrar / ocultar (no eliminar) una etiqueta del código de Python?

Estoy buscando algo como:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()
Heisenbug
fuente
Me alegra que haya cambiado el nombre de la variable vl(del ejemplo de código similar en una pregunta anterior) a aLayer. Es fácil confundir la letra minúscula lcon el dígito 1.
andytilia
@andytilia: tienes razón. También edité las viejas preguntas.
Heisenbug

Respuestas:

8

Puede controlar la visibilidad de la capa a través del objeto de leyenda. Aquí está, usando su código de muestra anterior:

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)

Aquí está la documentación para legendInterface: http://qgis.org/api/classQgsLegendInterface.html

¡Buena suerte!

andytilia
fuente