В настоящее время у меня есть табличное представление, прикрепленное к классу, производному от QSortFilterProxyModel. Теперь я хотел узнать, есть ли способ сохранить порядок столбцов, поскольку пользователи, как правило, перемещают столбцы вперед и назад. Также есть какой-либо сигнал, который испускается, когда пользователь меняет порядок столбцов. Я ищу этот но я не могу найти ничего, что могло бы сказать мне, когда столбец перемещается и как я могу сохранить порядок столбцов таблицы.
Любые предложения будут оценены
Причина, по которой вы не можете найти соответствующий сигнал в документации, потому что вы проверяете документацию 6-7 лет. То есть это Qt 4.1. Данный сигнал был добавлен в Qt в версии 4.6.
QAbstractItemModel недавно получил этот сигнал:
void QAbstractItemModel :: columnsMoved (const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationColumn) [сигнал]
Этот сигнал испускается после перемещения столбцов в модели. Элементы между sourceStart и sourceEnd включительно, в рамках данного элемента sourceParent были перемещены в destinationParent, начиная со столбца destinationColumn.
Примечание. Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может быть передан только реализацией QAbstractItemModel и не может быть явно указан в коде подкласса.
Эта функция была введена в QtCore 4.6.
Это похоже на то, что вы ищете. См. Документацию для получения дополнительной информации:
http://qt-project.org/doc/qt-5.0/qtcore/qabstractitemmodel.html#columnsMoved
Кроме того, не забывайте тот факт, что вам на самом деле нужно QAbstractTableModel
в конце дня.
Если вы действительно хотите, вы можете также поймать этот сигнал:
void QHeaderView :: sectionMoved (int logicIndex, int oldVisualIndex, int newVisualIndex) [сигнал]
Этот сигнал испускается при перемещении секции. Логический индекс раздела задается при помощи logicIndex, старый индекс — oldVisualIndex, а новая позиция индекса — newVisualIndex.
Пожалуйста, обратитесь к документации для получения более подробной информации:
http://qt-project.org/doc/qt-5.1/qtwidgets/qheaderview.html#sectionMoved
Вам необходимо получить QHeaderView
использование объекта QTableView::horizontalHeader
, Ты можешь использовать QHeaderView::saveState
а также QHeaderView::restoreState
сохранить состояние столбцов. Ты можешь использовать QHeaderView::sectionMoved
сигнал для обнаружения движения колонны.