Russian Qt Forum
Ноябрь 24, 2024, 06:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Фильтрация модели  (Прочитано 3335 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Июль 12, 2010, 19:44 »

Написал модель наследованную от QAbstractTableModel в качестве хранилища использую QList<HandleFile > где HandleFile это структура
описанная примерно так
Код:
struct
{
  enum type
  {
      Download,
      Complete
  }

  Type type;
}

Стало быть нужно отсортировать модель так :
Отобразить все элементы у которых type == Complete, стало быть вопрос как это можно реализовать, думаю что можно использовать
QSortFilterProxyModel , но вот как его в этом случае использовать даже ума не приложу, может подскажете чего?
Записан
SABROG
Гость
« Ответ #1 : Июль 12, 2010, 20:04 »

Сортировка и фильтрация немного разные вещи. Нужно фильтровать или сортировать (упорядочивать)?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Июль 12, 2010, 20:15 »

Нужно фильтровать, извиняюсь если неправильно задал вопрос.
Записан
SABROG
Гость
« Ответ #3 : Июль 12, 2010, 20:49 »

Информация о типе из структуры передается в методе QAbstractItemModel::data() для какой-нибудь роли? Если нет, то это нужно сделать, чтобы предоставить публичный интерфейс к подобной информации из других классов.

Затем я бы унаследовал QSortFilterProxyModel и переопределил метод filterAcceptsRow(). В нем получал бы информацию о состоянии из роли (Qt::UserRole + n) и в зависимости от результата возвращал true или false.

Если в будущем планируется передавать еще каку-либо информацию через роли помимо типа, то варианта 2:
- использовать оставшиеся роли (Qt::UserRole + n)
- зарегистрировать структуру с информацией как метатип и помещать в одну роль.

Можно конечно и указатель туда поместить, чтобы не дублировать данные из модели на роли, но я бы не стал этого делать. Как-то не безопасно и не правильно с точки зрения ООП.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Июль 12, 2010, 21:32 »

Информация о типе из структуры передается в методе QAbstractItemModel::data() для какой-нибудь роли?

Да, она хранит набор статусов для хендла, и в соответствии со статусом выводиться инфа в представление, спасибо за подсказку, попробую унаследоваться от QSortFilterProxyModel.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.