Ale*_*dar 0 python qt pyqt qtablewidget
我有一个QTableWidget第一列填充了可检查的项目,所以我需要重载这些项目才能对它们进行排序.当我单击该列的标题时,排序按预期工作(行已排序 - 首先是已检查的行,然后未检查).
当我运行我的GUI并且没有单击任何列的标题来排序表然后执行此操作时,会出现问题:
tableWidget.setSortingEnabled(0);
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);
Run Code Online (Sandbox Code Playgroud)
在那种情况下,被覆盖的__lt__被称为100次以上,但我没想到,因为我没有点击该列的标题进行排序.那么,为什么__lt__叫?为什么它比较了一些可检查的项目,即使我没有点击该列的标题来对它们进行排序?
请帮助我,__lt__当我有30多行时,调用消耗太多时间.
来自docs(C++ qt但适用):
sortingEnabled:bool
此属性保存是否启用排序.
如果此属性为true,则为表启用排序.如果此属性为false,则不启用排序.默认值为false.
注意:.使用setSortingEnabled()将该属性设置为true会立即触发使用当前排序部分和顺序调用sortByColumn().
如果您检查QHeaderView的文档(由窗口小部件查询以了解要排序的列),您可以阅读:
int QHeaderView :: sortIndicatorSection()const
返回具有排序指示符的节的逻辑索引.默认情况下,这是第0部分.
另请参见setSortIndicator(),sortIndicatorOrder()和setSortIndicatorShown().
和:
Qt :: SortOrder QHeaderView :: sortIndicatorOrder()const
返回排序指示符的顺序.如果没有部分具有排序指示符,则此函数的返回值未定义.
所以你应该小心这一点
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |