我有一个QTableWidget
,第一列填充了可选项目,所以我需要重载这些项目才能对它们进行排序。排序按预期工作时,我点击该列的标题(行排序 - 首先有检查行,然后不检查)。调用setSortingEnabled(1)时发生意外的行为
,当我跑我的GUI,不上任何列的标题点击排序表,然后做到这一点,会出现问题:
tableWidget.setSortingEnabled(0);
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);
在这种情况下覆盖__lt__
被称为100+次,但我不期望,因为我没有点击该列的标题进行排序。那么,为什么__lt__
被调用?为什么它比较了一些可检查的项目,即使我没有点击该列的标题来对它们进行排序?
请帮我,打电话__lt__
当我有30多行时,会消耗太多的时间。
谢谢您的回答。首先,我已经在'setSortingEnable(1)'之前和之后尝试过'sortIndicatorSection()',两个结果都是“7”。我有7列(0-6),所以我猜想,默认的排序部分不是0,但列表的表格(在我的情况下,第7节)尽管排序行为像它是0.也许这是因为我有tableWidget而不是tableView ? – Aleksandar
无论如何,你的回答指向我正确的方向,我发现这个:void QHeaderView :: setSortIndicator(int logicalIndex,Qt :: SortOrder order)' - _“logicalIndex可能是-1,在这种情况下,没有排序指示器被显示,模型将返回到它自然的,未排序的顺序。“_。 这也适用于tableWidget,在tableWidget填充之前放置该行解决了我的问题。 – Aleksandar
QTableWidget继承自QTableView。但在内部处理模型。奇怪的是7回来了。很高兴帮助反正:) – Trompa