[Qgis-developer] Get a signal when the symbology changed
Denis Rouzaud
denis.rouzaud at gmail.com
Wed Feb 26 01:46:39 PST 2014
Hi Guillaume,
On 26. 02. 14 10:15, Guillaume GIMENO wrote:
> Hi,
>
> I am working on a plugin and want to get a signal
> when the
> symbology
> of a vector layer is changed by the user. In the doc, there is a
> signal that seems to fit (
> http://qgis.org/api/classQgsVectorLayer.html#a403f235d3743aa59bb3aad69a72a5705
> )
> .
>
>
> I have
> tried two
> method
> s
> called :
>
> QObject.connect(self.iface.activeLayer(),
> SIGNAL("rendererChanged()"), self.DoSomething)
>
>
> I have also tried :
>
> self.iface.activeLayer().rendererChanged.connect(self.DoSomething)
>
>
> On os x mavericks nothing happens with the first method and for the
> second I have a error :
>
> AttributeError: 'QgsVectorLayer' object has no attribute
> 'rendererChanged'
>
I can't tell why, but you should use the second method as it is the new
signal/slot connection style.
>
> But on Debian, I can get the signal but just for the layer which is
> selected when the plugin is run ; On the other layers, if I change the
> color, nothing happens.
This is because iface.activeLayer() is the currently selected layer in
the legend. [0]
If you want to do so, you might want to connect all layers by browsing
them using:
iface.mapCanvas().layers() if you want all the displayed layers actually
displayed in the map
or
QgsMapLayerRegistry.instance(). mapLayers() if you want all the layers
Cheers,
Denis
[0]
http://qgis.org/api/classQgisInterface.html#a231f32fbf95004aebb067cb98f3a391c
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20140226/e4ed40f3/attachment.html>
More information about the Qgis-developer
mailing list