2013-04-28 69 views
1

我有一个约1000行的模型,其中一列每秒都在变化。 我在真实模型和表格视图之间放置了一个cusom排序/过滤器模型,以便在行更改后立即进行过滤。当选择多行时,QTableView变得非常慢

现在问题来了: 如果在表视图中没有选择任何东西,一切正常工作正常;但是当我选择了一些行时,表格变得滞后。选择的行数越多,滞后越多。

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

回答

0

对不起,但是在QTableView中有很多可能导致性能下降的地方。

查明减速的最简单方法是对应用程序进行概要分析。如果你有吃cpu的呼叫 ,那么推断原因并修复它就简单多了。

另外你不会多说关于自定义排序/过滤器代理的设计。如果您使用QSortFilterProxyModel,请注意它不能很好地扩展。

0

虽然画用于与选择的表启用,该函数的(顶部)标头:

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

被调用(两次,每次列 - 但可以在选择模式而变化)。 该函数遍历所有选定的行(“qitemselectionmodel.cpp”Qt 4.8.5中的第1333行)。 因此,如果选择了很多行,每个标题列的颜色会变得非常慢。

用于切换列/行的左侧标题。

被调用的函数大多不是虚拟的 - 所以如果没有完全绘制自己的头部或隐藏头部,似乎无法避免这种情况。

也许Qt应该优化这个。