如何在QT中为特定行范围排序QtableWiget

时间:2011-09-13 06:10:07

标签: qt

我想按列对Qtable小部件进行排序,但排序时不应考虑第一行(意味着排序应从第2行开始) 有没有办法在特定行范围内使用Qtable Widget的sortbycloumn()方法,或者在 QT 中有任何其他方法可以从第2行开始对QTableWidget进行排序。

1 个答案:

答案 0 :(得分:1)

我可能会沿着这些方向做点什么:

  • 子类QTableWidgetItem
  • 重新实施<操作
  • 在第一行的所有项目上设置一个特殊标志(使用setData())

然后你可以这样做:

bool MyTableWidget::operator <(MyTableWidgetItem *other)
{
  if( specialFlag )
    return true;

  return QTableWidgetItem::operator<(other);
}

这样你的第一行仍在排序,但你强迫它总是被认为“少于”其他行。

为了在更改排序方向(升序与降序)时保持行不会到达底部,您可以更改&lt;的行为。通过从表格小部件中抓取标题视图并询问排序方向来实现。

请参阅:

  • QTableWidgetItem :: tableWidget()
  • QTableWidget的:: headerView()
  • QHeaderView :: sortIndicatorOrder()