QTreeView中可见项目的列表
List of visible items from QTreeView
获取QTreeView显示的当前可见项目列表的最佳方式是什么?当它发生变化时,是否可以获得通知?
我的模型的数据可以与应用程序异步更改(数据来自硬件寄存器)。刷新数据可能很慢,所以我想在专用线程中定期刷新。我不想刷新所有项目,因为这会非常低效,只刷新可见的项目。
我知道这一点,但在我的情况下,数据是异步变化的,所以我不能只在调用setData()时刷新项。
忽略视图并专注于模型可能会更容易。
您可以在一个简单的提前刷新缓存上对其进行建模:.data()返回最后一个已知值,但也安排更新。由于视图将调用model.data(index)
- 当索引进入视图时
- 每当它发生变化(带有
dataChanged()
信号),同时索引可见
这可以形成一个循环来轮询可见项目。当单元格不可见时,视图将停止调用.data(),从而终止循环。您还应该考虑到data()
可以在这个循环之外调用,所以没有任何中断。
可能的顺序
UI
- 单元格进入视图
- 查看呼叫
model.data(cell, Qt::DisplayRole)
:- 将单元格添加到计划索引集(如果尚未计划)
- 返回旧数据或默认数据
- 数据异步更新,发出
dataChanged()
- 其中一个单元格在视图中,视图将再次调用
model.data()
-循环返回步骤2,或者该单元格不可见,序列到此结束
数据线程
- 每X毫秒更新所有计划索引(清除集合)
这将满足您连续/异步轮询可见模型项的要求。
相关文章:
- 从链接列表c++中删除一个项目
- 如何维护资源管理器项目视图中当前可见的项目列表
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 在给定的项目列表上实现搜索?
- 从文本文件读取,然后将项目存储到列表中
- 无法在我的链接列表中插入项目,head始终为NULL
- 通过查找一对项目的代码获取错误的输出,在给定的总和相等的给定列表中列表
- 如何获得项目中所有UCLASSE的列表(蓝图和C )
- 在修改项目列表时,请防止可编辑的Qcombobox选择更改
- C MakeFile项目如何使用相同的Basename加上后缀和相同扩展名创建文件列表
- 如何在C 中以给定索引列表中的项目插入项目
- 在拖放 QML 列表中插入/删除项目使用 cpp 模型查看
- 丢失的项目最终列表
- LVM_GETNEXTITEM在列表视图中找不到项目
- 链接列表中最后一项之后的项目是否为0
- 我想使用列表中的项目在地图中搜索
- 发送 QML 项目列表C++类连接到 QML :M16 错误
- QTreeView中可见项目的列表
- 访问链接的列表项目从参考这些项目的参考文献中
- C 使用字符串项目在列表中查找结构