В зависимости от того, сколько настроек вы хотите, QTreeWidget может быть самым простым маршрутом, но если у вас уже есть модель, это зависит от того, из какой вы получили модель. Чтобы получить доступ к функциональности, вам нужно добавить дочерние структуры в строки, которые вы уже создали. Возможно, вы пропустили его, но класс QModelIndex имеет поле «родитель», это помогает построить иерархическую структуру.
Вероятно, вы будете хорошо обслужены, если будете посещать занятия QStandardItem
и QStandardItemModel
. Они имеют приличный интерфейс для построения древовидной структуры, в зависимости от того, какие данные, которые вам понадобятся для отображения каждого уровня в иерархии, могут иметь различное количество столбцов, и глубина не ограничена.
Если вы чувствуете приключения, вы можете взять его сверху и просто внедрить интерфейс QAbstractItemModel
, но иногда это может быть трудно сделать правильно.
В целом, я думаю, что это одна из самых странных концепций в QT из-за количества размерностей, которые есть в QAbstractItemModel (строки, столбцы, родительский / дочерний элемент и роли)
Например
for (int i = 0; i < 3; ++i) {
QStandardItem *parent= new QStandardItem("Family " + QString::number(i),this);
item->setRowCount(3);
for (int j = 0; j < 3; ++j) {
QStandardItem *child = new QStandardItem("Child " + QString::number(i*3+j), this);
parent->setChild(j,child);
}
model->appendRow(parent);
}
Отказ от ответственности: это не было скомпилировано ...
Но, как вы видите, вам нужно добавлять дочерние элементы к элементу, а не модель, каждый элемент может содержать иерархию элементов.