我已将 QTableView/QTreeview 更新的缓慢隔离到两个地方:
QStyledItemDelegate::paint()
Q_EMIT dataChanged()
我尝试了很多东西,使模型的数据方法几乎什么都不做,只返回一个字符串。当列数很少时,GUI 非常清晰,比如 10 列或更少。我的最终用户有巨大的 2560x1600 显示器并且喜欢最大化可以显示超过 50 列和行的视图并且总是抱怨 GUI 有多慢。一旦模型完全填充,就没有插入或删除。我所做的只是dataChanged()
在以合理的速率获得新的更新时发出,每行每秒 2 次,每秒大约 48-100 行更新。
我曾尝试将图形系统切换到 OpenGL,但这无济于事。
- 仅注释掉
dataChanged()
我的 CPU 使用率约为 16% - 仅注释掉
QStyledItemDelegate::paint()
我的 cpu 使用率约为 30% - 在启用一切的情况下运行它是 100%
基于这些统计数据,我认为速度缓慢与 Qt 相关。有没有神奇的设置可以解决这个问题?