我正在使用QTableView
,当我使用setSortingEnabled
启用排序时,会立即调用sortByColumn()
,但我不希望这样,因为这默认对我的表进行第一列排序。
- 我只想启用排序,而不是在启用时强制排序
- 有没有办法避免
sortByColumn()
电话? - 或者如何覆盖
sortByColumn()
方法并防止那里的排序?
正如Qt论坛中建议的那样,上述问题有一个可能的解决方法,我提出了类似的问题 https://forum.qt.io/topic/84870/qtableview-setsortingenabled-forcing-sortbycolumn
您可以通过 QHeaderView::setSortIndicator 将默认排序列设置为 -1,如下所示
yourTableView->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder);
运行前
yourTableView->setSortingEnabled(true);
因为 QTableView::setSortingEnabled 使用 QHeaderView::sortIndicatorOrder 和 QHeaderView::sortIndicatorSection 来标识应按哪一列进行排序。
请注意,QHeaderView::setSortIndicator的文档表明,并非所有模型都支持将排序列设置为-1,在这种情况下甚至可能崩溃。