Название: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: ЙадоФитый ПлюсЧ от Август 03, 2016, 13:20 Добрый день!
Создал свою модель на основе QAbstractTableModel. Данные для модели хранятся в QMap с ключом int и значением в своем типе на основе структуры. (Хотя изначально нужно было, чтобы QMap был с ключом типа QString). Код: #ifndef MYDATALISTMODEL_H Код: #include "MyDatalistmodel.h" Модель назначена для объекта класса QTableView. Код: MyDataModel = new MyDatatModel(this); Однако, не работает сортировка. До этого я с моделями не работал. Поэтому не знаю как правильно организовать. Я не уверен, что QSortFilterProxyModel будет работать из-за такого выбора хранения данных для модели. Или это вообще роли не играет? Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: gil9red от Август 03, 2016, 13:36 В доке QSortFilterProxyModel (http://doc.qt.io/qt-4.8/qsortfilterproxyModel.html#details) написано, что по-умолчанию модель сортирует по Qt::DisplayRole. Можно ей задать и другую роль сортировки используя QSortFilterProxyModel::setSortRole (http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#sortRole-prop). А если уж совсем хочется свои условия сортировки, тогда нужно создать потомка QSortFilterProxyModel и переопределить метод QSortFilterProxyModel::lessThan (http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#lessThan)
Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: ЙадоФитый ПлюсЧ от Август 03, 2016, 17:31 В доке QSortFilterProxyModel (http://doc.qt.io/qt-4.8/qsortfilterproxyModel.html#details) написано, что по-умолчанию модель сортирует по Qt::DisplayRole. Можно ей задать и другую роль сортировки используя QSortFilterProxyModel::setSortRole (http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#sortRole-prop). А если уж совсем хочется свои условия сортировки, тогда нужно создать потомка QSortFilterProxyModel и переопределить метод QSortFilterProxyModel::lessThan (http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#lessThan) QSortFilterProxyModel отработала как надо. Спасибо. Теперь другой вопрос появился. Чтобы сделать чередование строк разными цветами, я должен создать свою модель, унаследованную от QSortFilterProxyModel, и переопределить в ней функции data в части Qt:BackgroundColorRole ? Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: __Heaven__ от Август 04, 2016, 09:46 Во вьюхе есть свойство разноцветных строк.
Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: ЙадоФитый ПлюсЧ от Август 04, 2016, 11:08 Во вьюхе есть свойство разноцветных строк. С приведенной ранее моделью, это свойство не отработало.А вот с неизмененной QSortFilterProxyModel все заработало как нужно. __Heaven__, gil9red! Спасибо за помощь! Теперь буду разбираться как вытащить из модели данные для выделенных строк. :) Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: __Heaven__ от Август 04, 2016, 13:01 QItemSelectionModel *QAbstractItemView::selectionModel() const
QModelIndexList QItemSelectionModel::selectedIndexes() const QModelIndex QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const Название: Re: Сортировка в QTableView с QAbstractTableModel и данными, хранящимися в QMAp Отправлено: ЙадоФитый ПлюсЧ от Август 24, 2016, 08:28 QItemSelectionModel *QAbstractItemView::selectionModel() const QModelIndexList QItemSelectionModel::selectedIndexes() const QModelIndex QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const Большое спасибо! Разобрался. Все сделал. |