QTableView setSortingEnabled强制sortBycolumn

时间:2017-11-09 04:18:24

标签: c++ qt qt5 qtableview qabstracttablemodel

我正在使用QTableView,当我使用setSortingEnabled启用排序时,会立即调用sortByColumn(),但我不希望这样,因为默认情况下会对我的表进行排序第1栏。

  • 我只想启用排序,而不是在启用时强制排序
  • 有没有办法避免sortByColumn()来电?
  • 或者我如何覆盖sortByColumn()方法并防止在那里进行排序?

2 个答案:

答案 0 :(得分:0)

对于上述问题,可能有一种解决办法,正如Qt论坛中所建议的那样,我问了类似的问题https://forum.qt.io/topic/84870/qtableview-setsortingenabled-forcing-sortbycolumn

答案 1 :(得分:0)

您可以像这样通过QHeaderView::setSortIndicator将默认排序列设置为-1

yourTableView->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder);

运行前

yourTableView->setSortingEnabled(true);

因为QTableView::setSortingEnabled使用QHeaderView::sortIndicatorOrderQHeaderView::sortIndicatorSection来确定应该对模型进行排序的列。

请注意,QHeaderView::setSortIndicator的文档表明并非所有模型都支持将sort列设置为-1,在这种情况下甚至可能崩溃。