选择多行时,QTableView变得非常慢

时间:2013-04-28 10:22:12

标签: performance qtableview

我有一个大约1000行的模型,其中一列每秒都会更改。 我在真实模型和表视图之间放置了一个cusom排序/过滤器模型,以便在更改后立即过滤行。

现在出现了问题: 如果在表视图中没有选择任何内容,那么一切正常;但是当我选择了一些行时,表格会变得滞后。选择的行越多,它就越滞后。

为什么呢?希望有人能给我一个提示,提前谢谢!

2 个答案:

答案 0 :(得分:0)

很抱歉,但在QTableView中有很多可能会降低性能的地方。

查明减速的最简单方法是分析应用程序。如果你有电话 吃cpu时,推断出原因并修复它会简单得多。

此外,您对自定义排序/过滤器代理的设计并未说太多。如果您使用QSortFilterProxyModel,请注意它不能很好地扩展。

答案 1 :(得分:0)

在启用选择的表绘制(顶部)标题时,函数:

bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent) const
调用

(每列两次 - 但在选择模式下可能会有所不同)。 此函数遍历所有选定的行(“qitemselectionmodel.cpp”Qt 4.8.5中的第1333行)。 因此,如果选择了多行,则每个标题列的绘制将变得非常慢。

左侧标题与cols / rows切换相同。

被调用的函数大部分都不是虚拟的 - 所以在没有完全绘制自己的标题或隐藏标题的情况下似乎无法避免这种情况。

也许Qt应该对此进行优化。