获取由QTreeView显示的当前可见项目列表的最佳方法是什么?并且当更改时是否可以获得通知?
我模型的数据可以在应用程序中异步更改(数据来自硬件寄存器)。刷新数据可能会很慢,因此我想定期在专用线程中刷新。我不想刷新所有项目,因为它效率很低,只是可见的项目。
我知道这一点,但就我而言,数据是异步更改的,因此仅当调用setData()时,我才能刷新这些项。
忽略视图并专注于模型可能会更容易。
您可以在简单的预刷新缓存上对其进行建模:.data()返回最后一个已知值,但也计划进行更新。由于视图将调用model.data(index)
dataChanged()
信号),而索引可见这可以形成循环以轮询可见项目。当单元格不可见时,视图将停止调用.data(),从而终止循环。您还应该考虑data()
可以在此循环之外调用的内容,因此不会中断。
model.data(cell, Qt::DisplayRole)
:
dataChanged()
model.data()
再次调用-循环回到步骤2,否则该单元格不可见,序列在此处结束。这将满足您连续/异步轮询可见模型项的要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句