QTableWidget性能优化

QTableWidget performance optimization

本文关键字:优化 性能 QTableWidget      更新时间:2023-10-16

我有一个QTableWidget,可以显示大量的元素(如20000个元素)。显示本身和上下滚动可以找到,但是,填充小部件的工作速度非常慢。我发现,构造显示的元素(字符串)的QVector工作得非常快,但是,将元素插入QTableWidget非常慢。我需要实现对元素的过滤,所以如果用户使用通配符过滤掉一半的元素,仍然需要清理QTreeWidget并插入10000个元素(或者隐藏10000个元素,这同样很慢)。合理的快速性能在这里至关重要,因为用户不能每次按下按钮都等上几分钟。Valgrind没有多大帮助,因为很明显,很多资源被一些隐式调用的函数吃掉了,特别是QHeaderView::sectionSize()QHeaderView::isSectionHidden()

将代码迁移到模型-视图模式

  1. 创建一个模型(子类QStandardItemModel)并将所有数据放在那里。
  2. 显示QTableView中的所有数据,确保一切正常
  3. 现在,您可以使用QSortFilterModel模型进行快速数据过滤,或者您可以子类化QProxyModel来进行更复杂的过滤。