怎样让Qt的tree控件显示更快?
我的工程需要显示大量的数据在qt的tree控件上,一共4列,第一列是按钮和文本,第二列是文本,第三列是combobox,第四列是icon。如果全部插入的话,会花费大量的时间,所以我决定只显示tree窗口部分的items,其他的不显示,通过响应鼠标滚轮事件,结合滚动条的位置来动态刷新显示区域的数据,以减少时间和内存的开销。
但是我用了3种方式实现上述功能,都遇到了同一个问题,速度太慢,三种办法刷新tree窗口内的数据(13行),都需要将近1秒时间,这对于滚动条滚动过程来说,速度难以接受,所以想问一下大家,有没有更快速的办法。
我使用了treewidget、treeview、treeview+代理 三种办法
treewidget:
我使用了setItemWidget实现的将按钮+文本 和 combobox 显示到treewidget上的。结果也发现,13行循环下来,setItemWidget这个函数总体时间花费较大。
treeview:
类似上一条,我使用了setIndexWidget,速度并没有明显改善。
treeview + 代理:
代理combobox,使用setItemDelegateForColumn函数将第三列设置代理,并且使用openPersistentEditor使代理起作用(否则combobox不显示)。这种方法快了一些,但还是相差较大,而且openPersistentEditor消耗的时间也较多。
综合来说,
treewidget:setItemWidget消耗时间大
treeview: setIndexWidget消耗时间大
treeview+delegate:openPersistentEditor消耗时间大
最近弄这个弄得头大,qt老手们,这个改怎么搞。
另:
附上这三个的简单实现,希望各位看一看指导我一下。
https://github.com/liu-wan001...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论