[Qgis-developer] Set QgsVectorLayer.EditType to value map and populate value:description pairs with python

Matthias Kuhn matthias.kuhn at gmx.ch
Mon Jan 27 15:40:00 PST 2014


Hi Eric,

On Mon 27 Jan 2014 20:21:35 CET, Eric Goddard wrote:
> Hi all,
> And this is where I'm stuck. I can't find anything in the API docs
> about how to set the value-description pairs. Any help would be
> greatly appreciated!
>
> Thanks,
> Eric
>

This was working in 1.8, but it's not working in 2.x releases (so far).
You may have heard of the update to "SIP API v2". Since we did this, Qt 
objects are converted to python objects to make it more natural to use 
for developers. Before that, you could just retrieve the existing 
valuemap and edit it in place, because when you called 
layer.valueMap(idx), you would receive a reference to the map QGIS 
internally works with. However, the new SIP API converts the map you 
receive to a native python dict and creates a copy of it. And if you 
edit this copy, QGIS doesn't realize, that there are changes.

So, in short: If you use 1.8, just edit the map you get back. If you 
use 2.0, I don't think there is a possibility and there won't be one in 
2.2. However, for 2.4 there will be an update which will make this 
possible again (with a new API).

Regards
Matthias


More information about the Qgis-developer mailing list