Qt 比对TreeItem节点

时间:2023-03-09 16:39:30
Qt 比对TreeItem节点
 void TreeModel::settingsUpdate(const QStringList &lines){
QList<TreeItem*> parents;
TreeItem* it1,* item1 = new TreeItem(rootItem->itemData);
TreeItem* it2,* item2 = rootItem;
QList<int> indexs;
int i1 = ,i2 = ;
setupModelData(lines,item1);
_repeat:
for(; i1 < item1->childCount() ; ++i1)
for(; i2 < item2->childCount() ; ++i2)
{
it1 = item1->child(i1);
it2 = item2->child(i2);
if( it1->data().toString() == it2->data().toString() )
{
if(it1->childCount() == )
{
QModelIndex index = createIndex(it2->childNumber(), , it2);
if (it2->setData(index.column(), it1->data()))
emit dataChanged(index, index);
settingItem.enqueue(it2);
++i2;
break;
}
else if(it2->childCount() > )
{
parents << item1 << item2;
indexs << i1 + << i2 + ;
item1 = it1;
item2 = it2;
i1 = ;
i2 = ;
goto _repeat;
}
}
}
if(!parents.isEmpty())
{
item2 = parents.last();
parents.pop_back();
item1 = parents.last();
parents.pop_back(); i2 = indexs.last();
indexs.pop_back();
i1 = indexs.last();
indexs.pop_back();
goto _repeat;
}
delete item1;
optMode = OptWrite;
}