Есть ли способ сохранить порядок столбцов?

В настоящее время у меня есть табличное представление, прикрепленное к классу, производному от QSortFilterProxyModel. Теперь я хотел узнать, есть ли способ сохранить порядок столбцов, поскольку пользователи, как правило, перемещают столбцы вперед и назад. Также есть какой-либо сигнал, который испускается, когда пользователь меняет порядок столбцов. Я ищу этот но я не могу найти ничего, что могло бы сказать мне, когда столбец перемещается и как я могу сохранить порядок столбцов таблицы.
Любые предложения будут оценены

5

Решение

Причина, по которой вы не можете найти соответствующий сигнал в документации, потому что вы проверяете документацию 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

5

Другие решения

Вам необходимо получить QHeaderView использование объекта QTableView::horizontalHeader, Ты можешь использовать QHeaderView::saveState а также QHeaderView::restoreState сохранить состояние столбцов. Ты можешь использовать QHeaderView::sectionMoved сигнал для обнаружения движения колонны.

6

По вопросам рекламы [email protected]