gpt4 book ai didi

c++ - 遍历 QTreeWidget 节点

转载 作者:太空狗 更新时间:2023-10-29 23:31:09 27 4
gpt4 key购买 nike

正如我在过去几个月中多次发布的那样,我正在用 Qt 编写一个日记/日记应用程序。条目在 QTreeWidget 中按年、月、日和条目(按天对条目排序的默认配置)或按年、月和条目(其中来自同一个月的所有条目组合在一起)排序

条目节点有两列:第一列是可见的,包含条目名称。第二列是不可见的,它包含数据库中相应条目的行号。选择该条目后,程序会根据该行号执行选择查询并显示内容。根、年、月(和日,如果启用)节点也有第二列,但它们的行号始终为 -1。 (有效行数从 0 开始)

日记工具栏已经有了后退和前进按钮,让用户可以查看下一个和上一个条目。虽然此功能已经有效,但树中当前选定的项目不会随之改变,这就是我要修复的问题。

我认为执行此操作的最佳方法是使用循环函数扫描每个列的第二个隐藏列值,直到找到正确的行号。每次单击后退/前进按钮都会再次调用此函数,因此一旦我开始工作,所选节点将始终与正在查看的当前条目匹配。

缺点是如果数据库变大,这种方法可能会很慢,但我对此无能为力。用户可能会删除条目或将它们随机排列,因此简单地依赖 rownumber++ 或 rownumber-- 可能会导致问题。由于数据库不填充缺失的行号,而是继续处理下一个行号,因此如果程序始终假定数据库中创建的每一行在任何给定时间仍然存在,则可能会出现问题。

我的问题是如何扫描 QTreeWidget 中每个节点的特定列?

最佳答案

可以通过以下方式遍历所有项目:

QTreeWidgetItemIterator it(treewidget);
while (*it) {
if ((*it)->text(column_number)=="searched")
break;
++it;
}

但也许 QTreeWiget::findItems() 正是您所需要的。

另请参阅 QStandardItem::data(),与隐藏列相比,这是存储每个项目隐藏数据的更好方法。

关于c++ - 遍历 QTreeWidget 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772754/

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