QTreeWidgetItemIterator带有"子树"

时间:2015-09-19 13:02:35

标签: c++ qt loops tree qtreewidget

我正在尝试迭代QTreeWidget的一部分。所以我使用QTreeWidgetItemIterator和带有QTreeWidgetItem的构造函数。 但是迭代器不会只访问项目及其子项,而是“#34;提升"在给定项目之后继续。

QTreeWidgetItem *root = topLevelItem(0);  
QTreeWidgetItemIterator it(root);

while (*it)
{
   qDebug() << (*it)->text(0);
   ++it;
}

所以我得到了这个而不是只有1个节点。

node1
    node11
    node12
node2
    node21

这是正常的吗?是否可以使用此迭代器迭代节点?

感谢。

1 个答案:

答案 0 :(得分:2)

对QTreeWidget不太熟悉,但我重新运行类似的东西,似乎它们的迭代器从起始节点迭代到树的末尾。在这种情况下,这应该做的工作(虽然有点难看):

QTreeWidgetItem *root = topLevelItem(0);
QTreeWidgetItemIterator it(root);
int nodesCount = 1; //for root, each visited child will update the count

for (int i = 0; i < nodesCount; ++i)
{
   qDebug() << (*it)->text(0);
   nodesCount += (*it)->childCount; //update the count for this node children
   ++it;
}