You&#39;re right Carson. I used it only with a WFS layer, and in fact I see that WFS is the only providers that implements it.<div>There would be the setDataProvider method on the vector layer but it&#39;s private...</div>
<div><br></div><div>You&#39;ve raised an important point, that I took for granted :(</div><div>I fear that in this moment the only solution is remove it and reload it. 
</div><div>giovanni<br><div><br><br><div class="gmail_quote">2012/5/17 Carson Farmer <span dir="ltr">&lt;<a href="mailto:carson.farmer@gmail.com" target="_blank">carson.farmer@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Giovanni,<br>
<br>
Thanks for the tip. To answer your question: I am trying to<br>
synchronise the layer with the datasource. Having said that, I don&#39;t<br>
seem to be able to get &#39;reload&#39; to work. It looks like reload is<br>
reimplemented in QgsVectorLayer, which in turns calls the<br>
dataProvider&#39;s reloadData method, so this may vary by provider type? I<br>
tried it with a shapefile and a spatialite layer, and it did not seem<br>
to do anything: I deleted several fields from the shapefile and added<br>
a field to the spatialite layer in an external program, and these<br>
changes were not reflected when I &#39;reloaded&#39; the layers. Am I missing<br>
something here? Perhaps there is something else needed to get the<br>
changes to &#39;show up&#39;?<br>
<br>
Cheers,<br>
<br>
Carson<br>
<br>
On Wed, May 16, 2012 at 4:36 PM, G. Allegri &lt;<a href="mailto:giohappy@gmail.com">giohappy@gmail.com</a>&gt; wrote:<br>
&gt; Do you mean refresh the rendering or synchronizing the layer with the data<br>
&gt; source?<br>
&gt; I usually use QgsMapLayer::reload() for the latter, and<br>
&gt; QgsMapCanvas::refresh() for the first.<br>
&gt;<br>
&gt; giovanni<br>
&gt;<br>
&gt; 2012/5/16 Carson Farmer &lt;<a href="mailto:carson.farmer@gmail.com">carson.farmer@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt; Hi list, does anyone know of a clever way to (programmatically) reload<br>
&gt;&gt; a layer without actually removing it and re-adding it to the layer<br>
&gt;&gt; list. Some context: I have a layer that sometimes gets updated by an<br>
&gt;&gt; external application, and I want to be able to &#39;refresh&#39; the layer<br>
&gt;&gt; from the Python console to reflect these changes (new features,<br>
&gt;&gt; deleted features, new attributes, etc.). I *could* simply load the<br>
&gt;&gt; layer again, but I&#39;m hoping there is a more efficient way to do this<br>
&gt;&gt; (also I want to keep the current styling, layer order, unique layer<br>
&gt;&gt; id, etc).<br>
&gt;&gt;<br>
&gt;&gt; Any thoughts/ideas? Note: assume we are working with a spatialite layer<br>
&gt;&gt; for now.<br>
&gt;&gt;<br>
&gt;&gt; Carson<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Dr. Carson J. Q. Farmer<br>
&gt;&gt; Centre for GeoInformatics (CGI)<br>
&gt;&gt; School of Geography and Geosciences<br>
&gt;&gt; Irvine Building, University of St Andrews<br>
&gt;&gt; St Andrews, Fife, KY16 9AL<br>
&gt;&gt; Scotland, UK<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Qgis-developer mailing list<br>
&gt;&gt; <a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
&gt;&gt; <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
&gt;<br>
&gt;<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Dr. Carson J. Q. Farmer<br>
Centre for GeoInformatics (CGI)<br>
School of Geography and Geosciences<br>
Irvine Building, University of St Andrews<br>
St Andrews, Fife, KY16 9AL<br>
Scotland, UK<br>
</font></span></blockquote></div><br></div></div>