Russian Qt Forum

Qt => Model-View (MV) => Тема начата: fantom84 от Октябрь 11, 2011, 17:23



Название: QSqlRelationalTableModel + QSortFilterProxyModel сокрытие и своп столбцов
Отправлено: fantom84 от Октябрь 11, 2011, 17:23
Здравствуйте! У меня есть модель связанная с некой таблицей в БД. Предпложим, что в этой таблице есть столбцы: A, B, C, D.
В качестве представления используется QTableView, порядок отображения столбцов такой же как и порядок их следования в таблице. Требуется при помощи QSortFilterProxyModel реализовать сокрытие столбцов и их своп. Т.е., например, требуется скрыть столбец D и поменять местами столбцы A и B. В итоге, при отображении должен получится следующий порядок следования столбцов: B, А, С. Сокрытие стобцов силами QSortFilterProxyModel реализуется без проблемм, посредством метода filterAcceptsColumn(). А вот с реализацией свопа столбцов возникли трудности, т.к. в QSortFilterProxyModel реализован Mapping с учетом сортировки строк, а вот для свопа столбцов Mapping не реализован. Попытки переопределить mapToSource() и mapFromSource() ни к чему не привели. Такое чувство, что надо полностью перпеписывать QSortFilterProxyModel для свопа столбцов, чего очень бы не хотелось. Хотелось бы услышать советы тех, кто уже сталкивался с такой проблемой. Может быть есть менее затратное решение?

P.S. В случае с QTableView скрыть и сделать своп столбцов можно через horizontalHeader(). А, если в дальнейшем для отображения будет использоваться QTreeView, которая будет отображать иерархию данных? Вообщем хотелось бы все реализвать силами QSortFilterProxyModel, а не представлений, основная проблема это своп столбцов (.