![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
ViGOur |
![]()
Сообщение
#1
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
При использовании модели, если я хочу сделать фильтр вроде:
пишем такой код, и нет проблем:
А как изобразить подобное использую QAbstractProxyModel или QSortFilterProxyModel? |
|
|
Гость_Гость_* |
![]()
Сообщение
#2
|
Гости ![]() |
Можно переопределить QSortFilterProxyModel::filterAcceptsRow и заимлементить возможность задавать больше одной колонки для фильтра.
|
|
|
PAFOS |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
А можно костыльнуть и наложить одну QSortFilterProxyModel на другую QSortFilterProxyModel
у первой sourceModel() - целевая модель, у второй sourceModel() - первая QSortFilterProxyModel . и соответственно в первой QSortFilterProxyModel прописываешь одно условие, во второй QSortFilterProxyModel другое) |
|
|
Tonal |
![]()
Сообщение
#4
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Так получится только пересечение организовать - будут видны элементы удовлетворяющие обоим условиям сразу.
Так что придётся таки filterAcceptsRow переопределять. ![]() |
|
|
Гость_Гость_FantasyOR_*_* |
![]()
Сообщение
#5
|
Гости ![]() |
А можно костыльнуть и наложить одну QSortFilterProxyModel на другую QSortFilterProxyModel у первой sourceModel() - целевая модель, у второй sourceModel() - первая QSortFilterProxyModel . и соответственно в первой QSortFilterProxyModel прописываешь одно условие, во второй QSortFilterProxyModel другое) о_О господи, за что!!! не претендую, на супер пупер код, но всё же лучше чем 100500 QSortFilterProxyModel вложеных друг в друга .h Раскрывающийся текст
.cpp Раскрывающийся текст
таким образом, получается фильтрация одновременно по множеству столбцов одновременно. Можно не обращать внимания на транслитерацию, по заданию нужно было, чтоб при вводе "AСD" фильтровалось по "AСD" и "АЦД", и наоборот. |
|
|
ViGOur |
![]()
Сообщение
#6
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Ребят, всем спасибо.
Я еще после 2 поста всё реализовал, только забыл сказать об этом... ![]() По поводу двух QSortFilterProxyModel знаю, но как уже было сказано, в таком случае будет как (a && c), а нужно именно (a || c) или вариации. |
|
|
Гость_Гость_FantasyOR_*_* |
![]()
Сообщение
#7
|
Гости ![]() |
Добавь переключатель в сортФильтрМодели ("и" или "или")
в зависимости от переключателя выбирается нужная ветка "res &= " или "res |= " всё равно рано или поздно понадобиться фильтровать по &&, это классика: посмотреть сколько ивановых занимают должность программист. P.S.: Пожалуйста посмотрите мой код выше, укажите на нелепости в плане качества кода. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.2.2025, 4:43 |