[Qgis-developer] Python: how to find all children of a group?

Andreas Neumann a.neumann at carto.net
Wed Nov 23 10:29:36 EST 2011


 Thanks Barry,

 I figured the method "groupLayerRelationship" and saw that it contains 
 a list of childLayers.

 I am trying to figure it out. It seems a bit complex to use for me. In 
 web development I do a lot of tree traversals in the DOM and seems much 
 easier to me ...

 But I also read that the QgsLegendInterface API grew over time and 
 needs some overhauling ...

 Thanks for the pointer!

 Andreas

 On Wed, 23 Nov 2011 15:17:25 +0000, Barry Rowlingson wrote:
> On Wed, Nov 23, 2011 at 2:53 PM, Andreas Neumann 
> <a.neumann at carto.net> wrote:
>> Hi,
>>
>> I am trying to get a list of layers that are the children of a group 
>> with a
>> certain group index (or even better by layer name).
>>
>> I can't figure out how to do this properly with the 
>> QgsLegendInterface
>> object.
>>
>> Does one have a piece of code how to accomplish this?
>
>  Well all have a piece of code that does that :) Qgis is open source,
> so we've all got the source...
>
>  And we have the documentation. I had a look at the qgis api docs:
>
> http://www.qgis.org/api/classQgsLegendInterface.html
>
>  - all the 'children' methods that you maybe tried are Qt things, and
> so irrelevant and not listed, But that groupLayerRelationship method
> looks interesting:
>
>>>> l.groupLayerRelationship()
> [[PyQt4.QtCore.QString(u''),
> [PyQt4.QtCore.QString(u'NER_adm020111123150216751')]],
> [PyQt4.QtCore.QString(u'group'),
> [PyQt4.QtCore.QString(u'NER_adm320111123150216816'),
> PyQt4.QtCore.QString(u'NER_adm220111123150216800'),
> PyQt4.QtCore.QString(u'NER_adm120111123150216790')]],
> [PyQt4.QtCore.QString(u'foobar'), []]]
>
>
> Seems to be a nested list of layer names (as QString objects). If you
> can unravel the output above, it starts with an empty root string,
> then I've got a layer, a group with three layers, and then and empty
> layer. You'll soon grok it.
>
>  So just find the element of the group you are interested in and do a
> depth-first or breadth first search to whatever depth you want.
> Simples!
>
> Barry

-- 
 --
 Andreas Neumann
 Böschacherstrasse 10A
 8624 Grüt (Gossau ZH)
 Switzerland


More information about the Qgis-developer mailing list