Здравстуйте. Столкнулся со следующей проблемой. Есть класс модели FilePlacesModel, потомок от QAbstractItemModel. Есть класс FilePlacesItem, в котором реализованы элементы, отображаемые в дереве. Интерфейс класса элемента дерева:
class FilePlacesItem : public QObject
{
Q_OBJECT
public:
FilePlacesItem(KBookmarkManager *manager,
const QString &address,
const QString &udi = QString(),
FilePlacesItem *parent = 0);
~FilePlacesItem();
void appendChild(KFilePlacesItem *child);
FilePlacesItem *child(int row);
int childCount() const;
int row() const;
FilePlacesItem *parent();
QList<FilePlacesItem*> childItems; // ветвь дерева
}
То есть, каждая ветвь дерева хранится в виде списка элементов FilePlacesItem.
У класса модели есть метод, который читает данные об элементах дерева с диска, заполняет дерево и возвращает указатель заполненное дерево:
FilePlacesItem *FilePlacesModel::loadItemList()
При вызове данного метода отдаю ему в качестве указателя на корневой элемент дерева указатель FilePlacesItem *currentItem.
После вызова этого метода получаю указатель на заполненное дерево.
Далее стоит задача отобразить дерево на экране. В связи с тем что дерево содержит всего два уровня, пытаюсь сделать это так:
Дерево пытаюсь построить следующим образом: (rootItem - корневой элемент дерева, которое будет отображаться при помощи модели представления)
for(int i=0; i < currentItems->childCount(); i++) // Проходим все ветки первого уровня, currentItems - указатель
{
q->beginInsertRows(QModelIndex(), i, i);
rootItem->appendChild(currentItems->child(i));
q->endInsertRows();
for(int j=0; j<currentItems->child(i)->childCount(); j++)
{
qDebug("_k_createFolders(): create places, row = %d", j);
q->beginInsertRows(q->index(i, 0, QModelIndex()), j, j);
// Насколько я понимаю в связи с тем что все элементы второго уровня дерево с корневым элементом rootItem получило
// ранее при добавлении в него элементов первого уровня, здесь можно никаких операций не производить
q->endInsertRows();
}
}
Для отображения модели используется класс - потомок от QTreeView.
При этом строится только первый уровень дерева, то есть элементы - потомки корня. Второй уровень не отображается. Кто может подсказать где я накосячил? С QT только начинаю разбираться, поэтому прошу указать на все совершенные ошибки и, по возможности, сильно не бить.