我有一个QTableView,它使用我制作的模型扩展了QAbstractTableModel。该模型使用
QList< QVector<QString> * >
作为集合。表视图用于显示来自应用程序的日志消息,因此集合最终将变得非常大...在插入几千行之后我注意到表视图开始减慢很多并且最终视图冻结了几秒钟在刷新之前..是否是使用它的集合类型使它减慢太多?有没有更好的方法来存储插入的数据? QTableView是否支持大量数据?
修改
在Qt forumn上发布代码: http://www.qtforum.org/article/37326/qttableview-slows-down-when-a-lot-of-data-is-inserted.html
答案 0 :(得分:0)
我已成功使用QTableView
显示~10000行,因此QTableView
能够支持它,但您的收藏仍然需要。
QList
在中间插入是非常昂贵的,因为你必须重新分配你试图插入的索引下面的所有内容,你只是在转移指针但仍然。
通常对于数据存储,我会使用std::vector< data_struct * >
而不是使用字符串向量。 QVariant
能够呈现整数和其他类型,因此您无需事先进行转换。
我能提出的最佳建议是运行gprof
或类似的工具,以准确地花时间,然后解决该特定部分。