Я начинающий. Замучился делать иерархию и запроса из БД.
Что не так?
QSqlRecord;
QStandardItemModel *model = new QStandardItemModel(iRow,3);
QModelIndex parent;
int iOFrame = sq.record().indexOf("id");
int iParent = sq.record().indexOf("idParent");
int iName = sq.record().indexOf("Name");
//while (int i = 0, y = 0; i < iRow; ++i)
//model->insertColumns(1, 1);
while (sq.next())
{
QModelIndex index, indId, indParent;
if (!sq.value(iParent).toInt())
{
model->insertRows(iRow, 1); //это верхний уровень
indId = model->index(iRow, 1);
indParent = model->index(iRow, 2);
index = model->index(iRow++, 0);
}
else
{
//это потомки
int y = sq.value(iParent).toInt();
QModelIndexList mil;
mil = model->match(model->index(0, 1), Qt::EditRole, y, 1, Qt::MatchStartsWith | Qt::MatchRecursive);
if (mil.count())
{
parent = mil.last().parent();
int iRow = mil.last().row(), iCol = mil.last().column();
parent = model->index(iRow, iCol - 1, parent);
//parent = model->index(0, 0, parent); //sq.value(iParent).toInt()
model->insertRows(0, 1, parent);
model->insertColumns(0, 1, parent);
index = model->index(0, 0, parent);
indId = model->index(0, 1, parent);
indParent = model->index(0, 2, parent);
}
}
s = sq.value(iName).toString();
model->setData(index, sq.value(iName).toString());
model->setData(indId, sq.value(iOFrame).toInt());
model->setData(indParent, sq.value(iParent).toInt());
sq.next();
}
ui.treeView->setModel(model);
Верхний уровень строится, а дочерний не могу...