Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QTableView sorting signal?

I use QTableView + QStandardItemModel to show some data (data stored in some other data structure), and this table view is sortable.

Since it is sortable, when sorting this model, I also need to sort the order of stored data. I try to implement a slot for the sorting signal, but I don't know what signal is emitted when clicking the header to start the sorting action.

I tried the clicked signal, but it's only emitted for data row, not for the headerData. what should I do if I want to do something else while sorting the QtableView + QStandardItemModel ?

like image 754
Claire Huang Avatar asked Jun 20 '10 23:06

Claire Huang


2 Answers

The Header of the View can be obtained by

QHeaderView * QTableView::horizontalHeader () const

Now with the obtained QHeaderView, you can connect a slot to the signal,

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

From the Qt 4.5 documentation, This signal is emitted when a section is clicked. The section's logical index is specified by logicalIndex.Note that the sectionPressed signal will also be emitted.

Hope it helps.

like image 64
liaK Avatar answered Oct 10 '22 03:10

liaK


The Header view mentioned above has signal sortIndicatorChanged(int, Qt::SortOrder) so it might be smarter to use it

Also, you might want to have a look into QSortFilterProxyModel more details here http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details

like image 27
Liberus Avatar answered Oct 10 '22 02:10

Liberus