首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用setSortingEnabled(1)时的意外行为

调用setSortingEnabled(1)时的意外行为
EN

Stack Overflow用户
提问于 2013-07-11 18:14:30
回答 1查看 1.1K关注 0票数 0

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

当我运行GUI时,如果没有单击任何列的标题来对表进行排序,然后执行以下操作,则会出现问题:

代码语言:javascript
复制
tableWidget.setSortingEnabled(0); 
// check/uncheck some checkable items here
tableWidget.setSortingEnabled(1);

在这种情况下,被覆盖的__lt__被称为100+次,但我并不期望出现这种情况,因为我没有单击要排序的列的标题。那么,为什么要调用__lt__呢?为什么它会比较一些可检查的项目,即使我没有单击该列的标题来对它们进行排序?

请帮帮我,当我有30+行的时候,调用__lt__会消耗太多的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-11 19:39:04

来自文档(C++ qt,但适用):

sortingEnabled :布尔图

此属性保存是否启用排序。

如果此属性为true,则对表启用排序。如果此属性为false,则不启用排序。默认值为false。

注:。使用setSortingEnabled()将属性设置为true会立即触发对sortByColumn()的调用,其中包含当前的排序部分和顺序。

如果您查看QHeaderView的文档(小部件查询它以了解排序依据的列),您可以阅读:

int QHeaderView::sortIndicatorSection () const

返回具有排序指示符的节的逻辑索引。默认情况下,这是第0节

另请参阅setSortIndicator()、sortIndicatorOrder()和setSortIndicatorShown()。

和:

Qt::SortOrder QHeaderView::sortIndicatorOrder () const

返回排序指示符的顺序。如果没有带排序指示符的节,则此函数的返回值为未定义的。

所以你应该小心这一点

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17590754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档