Привет всем!
Есть xml-ка, в ней хранятся несколько характеристик предмета. Сделал QVector объектов класса TListElements -QVector<TListElements> leAllElement;
C++ (Qt)
class TListElements
{
public:
 
    QString sName;//Название товара
    QString sGUIDParent;//GUID родителя
    QString sGUID;//GUID
    QString sCount;//Количество
 
    TListElements();
};
C++ (Qt)
    while (i < handler1.leAllElement.count())
    {
        //Если GUID родителя все нули,
        if (handler1.leAllElement.at(i).sGUIDParent == "00000000-0000-0000-0000-000000000000")
        {
            //            slCurrentGUIDs.append(handler1.leAllElement.at(i).sGUID);
 
            sTemp = handler1.leAllElement.at(i).sGUID;
 
            if (slCurrentGUIDs.indexOf(sTemp, 0) == -1)
            {
                slCurrentGUIDs.append(sTemp);
                items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(handler1.leAllElement.at(i).sName)));
                items2.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(handler1.leAllElement.at(i).sGUID)));
                 //После того как элемент добавлен в QTreeWidget он удаляется из списка
                handler1.leAllElement.remove(i);
                i = -1;
            }
        }
 
        i++;
    }
 
    //это означает, что элемент-родитель
    ui->treeWidget->addTopLevelItems(items);
    handler1.twTemp->addTopLevelItems(items2);
    slHistoryGUIDs.append(slCurrentGUIDs);
    QModelIndex miTemp;
    slCurrentGUIDs.clear();
    i = 0;
    int j = 0;
    int k = 0;
    //miTemp.sibling(0,0);
    ui->treeWidget->setCurrentIndex(ui->treeWidget->model()->index(0,0));
 
    while(j < ui->treeWidget->topLevelItemCount())
    {
        i = 0;
        ui->treeWidget->setCurrentIndex(ui->treeWidget->model()->index(j,0));
        handler1.twTemp->setCurrentIndex(ui->treeWidget->model()->index(j,0));
        while (i < handler1.leAllElement.count())
        {
            k = 0;
            slCurrentGUIDs.clear();
            while(k < ui->treeWidget->currentItem()->childCount())
            {
                //Если родительский GUID потомка == текущему GUID, то он добавляется как потомок выбранному элементу
                if (handler1.leAllElement.at(i).sGUIDParent == handler1.twTemp->currentItem()->child(k)->text(ui->treeWidget->currentIndex().column()))
                {
                    sTemp = handler1.leAllElement.at(i).sGUID;
 
                    //Нужно, чтобы GUID не повторялся
                    if (slCurrentGUIDs.indexOf(sTemp, 0) == -1)
                    {
                        slCurrentGUIDs.append(sTemp);
 
                        if (!handler1.leAllElement.at(i).sName.isEmpty()) items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(handler1.leAllElement.at(i).sName)));
                        if (!handler1.leAllElement.at(i).sGUID.isEmpty()) items2.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(handler1.leAllElement.at(i).sGUID)));
 
                        //После того как элемент добавлен в QTreeWidget он удаляется из списка
                        handler1.leAllElement.remove(i);
                    }
                }
                k++;
            }
            i++;
        }
 
        ui->treeWidget->currentItem()->addChildren(items);
        handler1.twTemp->currentItem()->addChildren(items2);
        //miTemp.sibling(j,0);
        //ui->treeWidget->setCurrentIndex(miTemp);
        j++;
    }
Задача сделать дерево из элементов с большой вложенностью до 10-15 потомков, в соответствии с условием принадлежности к определённому родителю. Если GUID родителя все нули, это означает, что элемент-родитель. Если родительский GUID потомка == текущему GUID, то он добавляется как потомок выбранному элементу или что-то подобное.
Понял, что заполнять нужно последовательно, начиная с toplevel, но запутался конкретно, код можно не смотреть, а направить в нужную сторону. Может лучше модель использовать + QTreeView?
Благодарю за ответы!