Jak ukryć / pokazać QGisVectorLayer przed kodem Python?

11

Po utworzeniu warstwy, jak mogę ją ukryć / pokazać? Mogę włączyć / wyłączyć renderowanie konkretnej warstwy, zaznaczając pole wyboru za pomocą QGIS, ale muszę to zrobić programowo z kodu python.

Jak mogę pokazać / ukryć (nie usuwać) etykietę z kodu python?

Szukam czegoś takiego:

aLayer = self.addVectorLayer(uri.uri(), layerName, self.dbConn.getProviderName())
aLayer.Hide()
....
aLayer.Show()
Heisenbug
źródło
Cieszę się, że zmieniłeś nazwę zmiennej vl(z podobnego kodu we wcześniejszym pytaniu) na aLayer. Łatwo pomylić małą literę lz cyfrą 1.
andytilia,
@andytilia: masz rację. Zredagowałem też stare pytania.
Heisenbug

Odpowiedzi:

8

Możesz kontrolować widoczność warstwy poprzez obiekt legendy. Oto, używając powyższego przykładowego kodu:

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)

Oto dokumentacja dla legendInterface: http://qgis.org/api/classQgsLegendInterface.html

Powodzenia!

andytilia
źródło