【问题标题】:QTreeWidgetItemIterator with a "subtree"带有“子树”的 QTreeWidgetItemIterator
【发布时间】:2015-09-19 13:02:35
【问题描述】:

我正在尝试迭代 QTreeWidget 的一部分。所以我使用 QTreeWidgetItemIterator 和带有 QTreeWidgetItem 的构造函数。 但迭代器不仅访问项目及其子项,而且“上升”并在给定项目之后继续。

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

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

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

node1
    node11
    node12
node2
    node21

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

谢谢。

【问题讨论】:

    标签: c++ qt loops tree qtreewidget


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助。但是这只迭代根的第一个孩子并且不是递归的?
    • 不太有帮助有几种更好的方法来迭代 qtreewidgetItem 但这就像根本不使用迭代器。我遇到了这个问题,因为我创建了一个需要 qtreewidgetiterator 的函数,现在我想将它与“子树”一起使用。
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多