Предлагается создать метод(открывающий xml), который бы вызывал рекурсивную функцию. Данная функция считывает xml элемент и проверяет, есть ли у передаваемого ей элемента дети
?
Кроме того, в рекурсивную функцию предлагается передавать родителя (QTreeWidgetItem), для того, чтобы было к чему прикреплять дочерний айтем.
void readXML()
{
QDomDocument domDocument;
//считываем xml в domDocument
...
QDomElement root = domDocument->documentElement();
if (root.hasChildNodes())
{
child = root.firstChildElement();
QTreeWidgetItem *parentItem = NULL;
f(child, parentItem);
}
}
void f(const QDomElement &child, QTreeWidgetItem &parentItem)
{
QTreeWidgetItem *widgetItem;
QDomElement tempElem;
if ( child.tagName() == "tree element" )
{
QTreeWidgetItem *widgetItem = new QTreeWidgetItem(parentItem);
widgetItem->setText(0, tr("tree element"));
}
else if (child.tagName() == "...")
{
...
}
//а далее рекурсия
if (child.hasChildNodes())
{
tempElem = child.firstChildElement();
f( tempElem, widgetItem );
}
tempElem = child.nextSiblingElement();
if ( !tempElem.isNull() ) f( tempElem, parentItem );
}
возможно где-то помарки, но так видится решение поставленной задачи