我对QStandardItemModel
有疑问。我想从一个模型(id,name,parent)获取值,并在另一个模型中构建树。
首先,让所有父母的所有孩子都到QMultiMap<int,QStandardItem*> childrenIndexes
:
getChildrens()
{
for(int i = 0 ; i < tableModel->rowCount() ; i++ )
{
QStandardItem* item_ptr = tableModel->item(i,1);
int parent;
if(tableModel->item(i,2)->text() == "null")
{
parent = -1;
}
else
{
parent = tableModel->item(i,2)->text().toInt();
}
childrenIndexes.insert(parent, item_ptr);
}
}
Multimap构建正常,下一步我递归调用构建函数。从root开始(第1项):
void addChildrens(QStandardItem* item)
{
int id = tableModel->item(tableModel->indexFromItem(item).row(),0)->text().toInt();
QString name = tableModel->item(tableModel->indexFromItem(item).row(),1)->text();
qDebug() << "Parsing item: " << name;
int parent;
if(tableModel->item(tableModel->indexFromItem(item).row(),2)->text() == "null")
{
qDebug() << "Got root!";
item = new QStandardItem(name);
treeModel->appendRow(item);
parent = -1;
}
else
{
parent = tableModel->item(tableModel->indexFromItem(item).row(),2)->text().toInt();
}
qDebug("Got %d childrens!",childrenIndexes.values(id).count());
for(int i = 0 ; i < childrenIndexes.values(id).count() ; i++)
{
QStandardItem* newItem = childrenIndexes.values(id).at(i);
qDebug() << newItem->text();
item->appendRow(newItem->clone());
addChildrens(newItem);
}
}
不幸的是,我的树只有根的孩子。哪里有问题?