【问题标题】:QTableView setSortingEnabled is forcing sortBycolumnQTableView setSortingEnabled 正在强制 sortBycolumn
【发布时间】:2017-11-09 04:18:24
【问题描述】:

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

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

【问题讨论】:

  • 为什么不在你想要它被订购时而不是之前调用那个函数?
  • @eyllanesc 据我所知,为启用 QTableView 排序,我们需要将 setSortingEnabled 设置为 true 我在为我的视图设置模型/视图/委托时在我的 init 函数中执行此操作.
  • @eyllanesc 如果您能建议我在哪里设置标志 setSortingEnabled 以便我能够通过单击列标题进行排序,那将会很有帮助。
  • 好的,我知道了,你用的是Qt4还是Qt5?
  • @eyllanesc 我正在使用 Qt5.9

标签: c++ qt qt5 qtableview qabstracttablemodel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    运行前

    yourTableView->setSortingEnabled(true);
    

    因为QTableView::setSortingEnabled 使用QHeaderView::sortIndicatorOrderQHeaderView::sortIndicatorSection 来确定模型应按哪一列排序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2017-12-25
      • 2023-03-13
      相关资源
      最近更新 更多