关于python:调用setSortingEnabled(1)时出现意外行为

Unexpected behaviour when setSortingEnabled(1) is called

我有一个QTableWidget,第一列中填充了可检查项,所以我需要重载这些项才能对它们进行排序。当我单击该列的标题时,排序工作如预期的那样工作(行被排序-首先有选中的行,然后没有选中)。

当我运行图形用户界面时,如果不单击任何列的标题来排序表,则会出现问题,然后执行以下操作:

1
2
3
tableWidget.setSortingEnabled(0);
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);

在这种情况下,重写的__lt__被称为100+次,但我不希望这样做,因为我没有单击该列的头进行排序。那么,为什么叫__lt__?为什么它会比较一些可检查的项目,即使我没有单击该列的标题对它们进行排序?

请帮帮我,打电话给__lt__我有30多行的时候,时间太长了。


从DOCS(C++ QT,但适用):

sortingEnabled : bool

This property holds whether sorting is enabled.

If this property is true, sorting is enabled for the table. If this
property is false, sorting is not enabled. The default value is false.

Note:. Setting the property to true with setSortingEnabled()
immediately triggers a call to sortByColumn() with the current sort
section and order.

如果您检查qheaderview的文档(小部件查询该文档以了解要排序的列),您可以阅读:

int QHeaderView::sortIndicatorSection () const

Returns the logical index of the section that has a sort indicator. By
default this is section 0.

See also setSortIndicator(), sortIndicatorOrder(), and
setSortIndicatorShown().

还有:

Qt::SortOrder QHeaderView::sortIndicatorOrder () const

Returns the order for the sort indicator. If no section has a sort
indicator the return value of this function is undefined.

所以你应该小心点