Предлагается создать метод(открывающий 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 );
}
возможно где-то помарки, но так видится решение поставленной задачи