带有"子树"的QTreeWidgetItemIterator

QTreeWidgetItemIterator with a "subtree"

本文关键字:QTreeWidgetItemIterator 子树 带有      更新时间:2023-10-16

我正在尝试迭代QTreeWidget的一部分。所以我使用一个QTreeWidgetItemIterator和一个QTreeWidgetItem的构造函数。但是迭代器并不只访问该元素及其子元素,而是"上升"并继续到给定元素之后。

QTreeWidgetItem *root = topLevelItem(0);  
QTreeWidgetItemIterator it(root);
while (*it)
{
   qDebug() << (*it)->text(0);
   ++it;
}

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

node1
    node11
    node12
node2
    node21

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

谢谢。

对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;
}