在大量插入后,向QTableView添加行会减慢应用程序的速度

时间:2012-01-19 20:53:09

标签: c++ qt4 qtableview

我有一个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

1 个答案:

答案 0 :(得分:0)

我已成功使用QTableView显示~10000行,因此QTableView能够支持它,但您的收藏仍然需要。

QList在中间插入是非常昂贵的,因为你必须重新分配你试图插入的索引下面的所有内容,你只是在转移指针但仍然。

通常对于数据存储,我会使用std::vector< data_struct * >而不是使用字符串向量。 QVariant能够呈现整数和其他类型,因此您无需事先进行转换。

我能提出的最佳建议是运行gprof或类似的工具,以准确地花时间,然后解决该特定部分。