Здравствуйте!
Я читаю БД и из нее строю дерево в QTreeWidget. У меня в БД есть id, id_parent и title. Так вот после построении дерева мне необходимо выделить какую-то ветку с определенным id. Находил информацию что это делается через setCurrentIndex, но выделить самую верхнюю ветку у меня получается, а если где-то в середине - нет. Вот просьба помочь мне в этом.
Кусок кода образующую массив данных и вызывающую рекурсивную функцию
| Код | void client_add::CreateTree () { ui->tree_categorys->clear(); query = new QSqlQuery(); query->exec("SELECT id, id_parent, title FROM categorys ORDER BY id_parent ASC"); QStringList mass; while (query->next()) { mass << query->value(0).toString() << query->value(1).toString() << query->value(2).toString(); }
QTreeWidgetItem *treeItm= new QTreeWidgetItem(ui->tree_categorys); treeItm->setText(0, "Начало"); treeItm->setData(0, Qt::UserRole, "0"); ui->tree_categorys->addTopLevelItem(treeItm); treeAdd(treeItm, mass, "0"); }
|
Рекурсивная функция
| Код | void client_add::treeAdd(QTreeWidgetItem *treeP, QStringList result, QString node_id) { int i = 0; int num = 1; while (i < result.size()) { if (node_id == result[i+1]) { QTreeWidgetItem *itm = new QTreeWidgetItem(); itm->setText(0, result[i+2]); itm->setData(0, Qt::UserRole, result[i]); treeP->addChild(itm); treeAdd(itm, result, result[i]); } i += 3; num += 1; } }
|
|