6

我使用QTableView+QStandardItemModel来显示一些数据(存储在其他数据结构中的数据),并且这个表视图是可排序的。

既然是可排序的,那么在对这个模型进行排序的时候,我还需要对存储数据的顺序进行排序。我尝试为排序信号实现一个​​插槽,但我不知道单击标题以启动排序操作时会发出什么信号。

我尝试了 clicked 信号,但它只针对数据行发出,而不是针对 headerData。如果我想在对QtableView+进行排序时做其他事情该QStandardItemModel怎么办?

4

2 回答 2

8

可以通过以下方式获得视图的标题

QHeaderView * QTableView::horizontalHeader () const

现在有了获得的QHeaderView,您可以将插槽连接到信号,

void QHeaderView::sectionClicked ( int logicalIndex )   [signal].

在 Qt 4.5 文档中,单击某个部分时会发出此信号。该部分的逻辑索引由logicalIndex 指定。注意,sectionPressed 信号也将被发出。

希望能帮助到你。

于 2010-06-21T04:27:58.327 回答
2

上面提到的 Header 视图有信号sortIndicatorChanged(int, Qt::SortOrder),所以使用它可能更聪明

此外,您可能想在QSortFilterProxyModel 这里查看更多详细信息http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details

于 2016-01-05T13:58:37.143 回答