我有一个 QTableView,它使用我制作的扩展 QAbstractTableModel 的模型。该模型使用了一个
QList< QVector<QString> * >
作为集合。 TableView 用于显示来自应用程序的日志消息,因此集合最终会变得非常大......在插入几千行后,我注意到 TableView 开始变慢很多,最终 View 卡住了几秒钟刷新之前.. 是不是我使用的那种收藏类型让它变慢了很多?有没有更好的方法来存储正在插入的数据? QTableView是否支持大数据量?
编辑
在Qt论坛上发布的代码: http://www.qtforum.org/article/37326/qttableview-slows-down-when-a-lot-of-data-is-inserted.html
最佳答案
我已经成功使用了QTableView
显示 ~10000 行所以 QTableView
能够支持它,但您的收藏还有待改进。
QList
插入中间非常昂贵,因为您必须重新分配位于您尝试插入的索引下方的所有内容,当然您只是在移动指针但仍然如此。
通常对于数据存储,我会使用 std::vector< data_struct * >
而不是使用字符串 vector 。 QVariant
非常有能力呈现整数和其他类型,因此您不必预先进行转换。
我能想到的最好建议是运行 gprof
或类似的工具来记录您确切花费时间的地方,然后解决该特定问题。
关于c++ - 在大量插入后,向 QTableView 添加行会降低应用程序的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933126/