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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSortFilterProxyModel фильтрация по bool  (Прочитано 3959 раз)
Hammer
Гость
« : Январь 21, 2013, 09:55 »

Здравствуйте
Есть модель, в основе которой лежит структура
Код:
typedef struct
{
    int id;
    int tape;
    QString name;
    bool visible;
} GROUP;
Есть ListView, в котором должны отображаться только те элементы, для которых visible == true.
Решил сделать через FilterProxyModel, но что-то не вижу там штатных средств для фильтрации по значению bool. Может, я вообще все усложняю?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Январь 21, 2013, 16:56 »

как-то так:
Код
C++ (Qt)
   virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
   {
       QAbstractItemModel *model = sourceModel();
       return model->data(model->index(source_row, 0,  source_parent), MyVisibleRole).toBool();
   }
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Hammer
Гость
« Ответ #2 : Январь 22, 2013, 07:59 »

как-то так:
Код
C++ (Qt)
   virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
   {
       QAbstractItemModel *model = sourceModel();
       return model->data(model->index(source_row, 0,  source_parent), MyVisibleRole).toBool();
   }
Это да, просто не хотелось возиться с унаследованием ) Думал, вдруг есть какие-то штатные средства или вообще другие, менее навороченные, методы.
Спасибо за пример!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Январь 22, 2013, 14:33 »

а по-другому ты с QSortFilterProxyModel не справишься если нужно нестандартное поведение
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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