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