gpt4 book ai didi

c++ - 如何获取 QTreeWidget 的项目数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:50 25 4
gpt4 key购买 nike

我创建了一个 QTreeWidget,我试图列出所有显示的项目。

如果项目有 child 但没有展开,我不想进入项目内部。它确实获得了我在树中可以看到的项目数。

我试过了:

   for( int i = 0; i < MyTreeWidget->topLevelItemCount(); ++i )
{
QTreeWidgetItem *item = MyTreeWidget->topLevelItem(i);
...

但这只给了我 topLevelItem,我想要所有我能看到的。在示例中,我应该能够数出 14 个项目

enter image description here

最佳答案

您可以编写一个递归函数来遍历层次结构并计算所有可见项。例如:

int treeCount(QTreeWidget *tree, QTreeWidgetItem *parent = 0)
{
int count = 0;
if (parent == 0) {
int topCount = tree->topLevelItemCount();
for (int i = 0; i < topCount; i++) {
QTreeWidgetItem *item = tree->topLevelItem(i);
if (item->isExpanded()) {
count += treeCount(tree, item);
}
}
count += topCount;
} else {
int childCount = parent->childCount();
for (int i = 0; i < childCount; i++) {
QTreeWidgetItem *item = parent->child(i);
if (item->isExpanded()) {
count += treeCount(tree, item);
}
}
count += childCount;
}
return count;
}

以及用法:

QTreeWidget tw;
// Add items
[..]
int visibleItemsCount = treeCount(&tw);

关于c++ - 如何获取 QTreeWidget 的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28829192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com