我有分层数据结构(3d空间中的项目),我需要在TreeView中显示这些数据。据我所知在Qt中实现这一点,我需要通过我的数据实现QAbstractItemModel,并且由于某些原因我遇到了麻烦:
我正在考虑两种可能的解决方案:
我的问题是,如果我的应用程序具有以下工作流程,那么处理这种情况的最佳方法是:它有多个数据和数据结构更新,通常需要10-500毫秒,所有数据包含的节点不超过10000个,数据更改依次更新树视图,几秒钟后一切都重复
BTW:从TreeView的角度来看,我的数据结构是只读的,所有更改都是对我的数据执行的,然后只是在TreeView中反映
答案 0 :(得分:1)
您的Qt模型当然可以充当代理。如果您将更新通知视为瓶颈,则更新通知只是瓶颈。使用排队连接当前每次调用都会增加2+n
堆分配,其中n
是参数的数量,因此在您的情况下使用它们会适得其反。
最终,Qt需要基于订阅的更改通知,因为树视图可能对隐藏项目的更新不感兴趣。但是,这样的通知只有一个名义上的开销,因为视图不会对它们造成任何沉重的负担。