c++ - 在大量插入后,向 QTableView 添加行会降低应用程序的速度

标签 c++ qt4 qtableview

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

相关文章:

c++ - cuda全局到共享内存和常量内存

.net - 什么是 .NET,我如何知道我的项目是否使用它?

c++ - 在头文件与 .cpp 文件中编码 C++ (moSTLy)

c++ - 在 IF 语句条件内循环

c++ - 在 X 轴上翻转 QGraphicsItem "inplace"(左/右)

android - std::min 的参数顺序更改浮点的编译器输出

qt - 如何在Qt中将一个小部件放置在另一个上

qt - 如何从 QTest 单元测试编辑 QTableView 单元格?

c++ - 在 TextEdit Item Delegate 的定义中找不到错误

qt - QSortFilterProxyModel QTableView 5.3 不排序/更新?