Сигнал сортировки QTableView?

Я использую QTableView + QStandardItemModel, чтобы показать некоторые данные (данные, хранящиеся в какой-то другой структуре данных), и это табличное представление сортируется.

Поскольку она сортируема, при сортировке этой модели мне также необходимо отсортировать порядок хранимых данных. Я пытаюсь реализовать слот для сигнала сортировки, но я не знаю, какой сигнал излучается при нажатии на заголовок, чтобы начать действие сортировки.

Я попробовал сигнал clicked, но он испускается только для строки данных, а не для headerData. что мне делать, если я хочу сделать что-то еще при сортировке QtableView + QStandardItemModel ?


person Claire Huang    schedule 20.06.2010    source источник


Ответы (2)


Заголовок представления можно получить с помощью

QHeaderView * QTableView::horizontalHeader () const

Теперь с полученными QHeaderView можно подключить к сигналу слот,

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

Из документации Qt 4.5: Этот сигнал испускается при щелчке по разделу. Логический индекс раздела задается параметром logicalIndex. Обратите внимание, что также будет отправлен сигнал sectionPressed.

Надеюсь, поможет.

person liaK    schedule 21.06.2010

Представление заголовка, упомянутое выше, имеет сигнал sortIndicatorChanged(int, Qt::SortOrder), поэтому может быть разумнее использовать его.

Кроме того, вы, возможно, захотите ознакомиться с QSortFilterProxyModel более подробной информацией здесь http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details

person Liberus    schedule 05.01.2016
comment
sortIndicatorChanged запускается перед сортировкой. раздел Нажал не. - person Alsatian; 15.01.2021