【发布时间】:2021-01-13 12:18:45
【问题描述】:
我有一个使用 QSortFilterProxyModel 的表。它还负责根据用户单击的特定列对元素进行排序。现在我发现当表格显示大约 10000 个元素时,这非常慢,可能需要几秒钟。整个事情是不可重现的,这取决于列的预排序方式可能需要更长的时间 - 但并非在所有情况下都如此。
QSortFilterProxyModel 中的排序功能是一些非常奇怪的东西,其中的部分地图被排序和打乱等等......我不明白那里到底发生了什么。
所以我的想法是创建一个自己的模型,它继承自 QSortFilterProxyModel 但实现自己的排序功能 - 就像 QSortFilterProxyModel 但以更有效的方式(STL-sort-stuff 应该可以完成这项工作,因为它对我的数据非常快) .
所以我的问题是:我该怎么做?为了拥有自己的排序功能,我必须实现什么?或者有没有更好的方法来加速标准的 QSortFilterProxyModel?
谢谢!
【问题讨论】:
-
您的模型的
data()方法如何返回值?调用速度慢了 100000 倍吗? -
@G.M.这是一种比较方法,这对使用的排序算法有什么影响?
-
因为它本质上允许您定义排序算法使用的比较算法——就像您可以提供自己的
operator<重载来影响类实例在@987654325 中的排序方式一样@. -
@G.M.抱歉,我不明白:是的,它允许您替换/定义比较。但是比较只是排序算法的一小部分。当我更改比较时,这会如何影响调用该比较函数的排序算法的工作原理和效率?
标签: c++ qt qt5 model-view