Q_FOREACH ( QgsAttributeEditorElement* elem, mAttributeEditorElements ) { if ( elem->type() == QgsAttributeEditorElement::AeTypeContainer ) { QgsAttributeEditorContainer* cont = dynamic_cast< QgsAttributeEditorContainer* >( elem ); if ( !cont ) continue; QList<QgsAttributeEditorElement*> relations = cont->findElements( QgsAttributeEditorElement::AeTypeRelation ); Q_FOREACH ( QgsAttributeEditorElement* relElem, relations ) { QgsAttributeEditorRelation* rel = dynamic_cast< QgsAttributeEditorRelation* >( relElem ); if ( !rel ) continue; rel->init( QgsProject::instance()->relationManager() ); }
QList<QgsAttributeEditorElement*> QgsAttributeEditorContainer::findElements( QgsAttributeEditorElement::AttributeEditorType type ) const { QList<QgsAttributeEditorElement*> results; Q_FOREACH ( QgsAttributeEditorElement* elem, mChildren ) { if ( elem->type() == type ) { results.append( elem ); } if ( elem->type() == AeTypeContainer ) { QgsAttributeEditorContainer* cont = dynamic_cast<QgsAttributeEditorContainer*>( elem ); if ( cont ) results += cont->findElements( type ); } } return results; }