QTableView setSortingEnabled强制sortBycolumn

问题描述 投票:0回答:2

我正在使用QTableView,当我使用setSortingEnabled启用排序时,立即调用sortByColumn(),但我不想这样,因为这默认排序第一列我的表。

  • 我想只启用排序,而不是在启用时强制排序
  • 有没有办法避免sortByColumn()呼叫?
  • 或者我怎么能覆盖sortByColumn()方法并阻止那里的排序?
c++ qt qt5 qtableview qabstracttablemodel
2个回答
0
投票

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


0
投票

您可以像qzxswpoi一样将默认排序列设置为-1

QHeaderView::setSortIndicator

在跑步之前

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

因为yourTableView->setSortingEnabled(true); 使用QTableView::setSortingEnabledQHeaderView::sortIndicatorOrder来确定应该对哪个列进行排序。

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

© www.soinside.com 2019 - 2024. All rights reserved.