QTableView setSortingEnabled 正在强制 sortBycolumn

QTableView setSortingEnabled is forcing sortBycolumn

本文关键字:sortBycolumn setSortingEnabled QTableView      更新时间:2023-10-16

我正在使用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,在这种情况下甚至可能崩溃。