2013-09-28 1 views
4

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

ответ

4

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

5

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

 Смежные вопросы

  • Нет связанных вопросов^_^