QTableView排序信号?

Posted

技术标签:

【中文标题】QTableView排序信号?【英文标题】:QTableView sorting signal? 【发布时间】:2010-06-20 23:35:31 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

View的Header可以通过

QHeaderView * QTableView::horizontalHeader () const

现在有了得到的QHeaderView,就可以给信号连接一个槽了,

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

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

希望对你有帮助。

【讨论】:

【参考方案2】:

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

另外,你可能想看看QSortFilterProxyModel 更多细节在这里http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details

【讨论】:

sortIndicatorChanged 在排序前被触发。部分没有点击。

以上是关于QTableView排序信号?的主要内容,如果未能解决你的问题,请参考以下文章

QTableView - 没有得到选择改变信号

如何检测 QTableView 中的双击

QTableView 没有行区的信号

“行高改变”的 QTableView 信号或事件

QTableView点击信号从未发出?

如何在 QTableView 中发出输入单元格和离开单元格的信号