Название: Фильтрация модели Отправлено: ecspertiza от Июль 12, 2010, 19:44 Написал модель наследованную от QAbstractTableModel в качестве хранилища использую QList<HandleFile > где HandleFile это структура
описанная примерно так Код: struct Стало быть нужно отсортировать модель так : Отобразить все элементы у которых type == Complete, стало быть вопрос как это можно реализовать, думаю что можно использовать QSortFilterProxyModel , но вот как его в этом случае использовать даже ума не приложу, может подскажете чего? Название: Re: Фильтрация модели Отправлено: SABROG от Июль 12, 2010, 20:04 Сортировка и фильтрация немного разные вещи. Нужно фильтровать или сортировать (упорядочивать)?
Название: Re: Фильтрация модели Отправлено: ecspertiza от Июль 12, 2010, 20:15 Нужно фильтровать, извиняюсь если неправильно задал вопрос.
Название: Re: Фильтрация модели Отправлено: SABROG от Июль 12, 2010, 20:49 Информация о типе из структуры передается в методе QAbstractItemModel::data() для какой-нибудь роли? Если нет, то это нужно сделать, чтобы предоставить публичный интерфейс к подобной информации из других классов.
Затем я бы унаследовал QSortFilterProxyModel и переопределил метод filterAcceptsRow(). В нем получал бы информацию о состоянии из роли (Qt::UserRole + n) и в зависимости от результата возвращал true или false. Если в будущем планируется передавать еще каку-либо информацию через роли помимо типа, то варианта 2: - использовать оставшиеся роли (Qt::UserRole + n) - зарегистрировать структуру с информацией как метатип и помещать в одну роль. Можно конечно и указатель туда поместить, чтобы не дублировать данные из модели на роли, но я бы не стал этого делать. Как-то не безопасно и не правильно с точки зрения ООП. Название: Re: Фильтрация модели Отправлено: ecspertiza от Июль 12, 2010, 21:32 Информация о типе из структуры передается в методе QAbstractItemModel::data() для какой-нибудь роли? Да, она хранит набор статусов для хендла, и в соответствии со статусом выводиться инфа в представление, спасибо за подсказку, попробую унаследоваться от QSortFilterProxyModel. |