Russian Qt Forum
Ноябрь 24, 2024, 14:41
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ? (Прочитано 5913 раз)
voronElf
Гость
Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
:
Январь 15, 2010, 10:09 »
Всем привет.
Есть цепочка моделей (QSortFilterProxyModel), предыдущая является источником данных для следующей. Ну и первая подцеплена к другой модели, в которой данные, а последню проксю повешана вьюха. В каждой прокси модели свой критерий фильтрации.
Нужно изменить/сбросить фильтры всех/нескольких прокси-моделей одновременно. Вызываю по-порядку setFilter...() для каждой. Я так понимаю каждый такой вызов заставляет следующие по порядку далее прокси-модели и вьюху обновлять данные, измененные в источнике (при этом в прокси-моделях свои фильтры отрабатывают). Вызываю например 3 раза setFilter...(), отрабатывают 3 цепочки обновления данных. А хотелось бы сначала изменить критерии фильтров, а потом чтобы данные обновились 1 раз, общий для всех.
Подскажите как реализовать или в какую сторону доки копнуть ?
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #1 :
Январь 15, 2010, 11:29 »
сделать 1 проксю
Записан
voronElf
Гость
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #2 :
Январь 18, 2010, 06:32 »
хороший вариант, только критерии фильтрации слишком разные (все модели наследованы и переопределены функции фильтрации ), плюсом нужен функционал как в яндексе галочка "искать в найденном", т.е. длина цепочки меняется. Поэтому вопрос остается.
Записан
DS_tm
Гость
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #3 :
Январь 18, 2010, 12:31 »
blockSignals не прокатит?
А вообще, Авварон прав, лучший способ оптимизации использование одной прокси.
Вешенье одной прокси на другую хороший повод пересмотреть архитектуру.
«
Последнее редактирование: Январь 18, 2010, 13:29 от DS_tm
»
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #4 :
Январь 18, 2010, 13:16 »
просто сорт прокси модель она мало того что иногда глючит, так еще и жутко тормозит... В принципе ваш выбор понятен - прокси удобно подменять, но в данном случае есть одно действие - фильтр, задаваемый разными параметрами.
Как вариант еще можно отключать модели, настраивать а потом подключать, но всё равно при отключении/подключении будет та же проблема.
Записан
voronElf
Гость
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #5 :
Январь 19, 2010, 07:06 »
Как доберусь до оптимизации этого места, попробую с blockSignals поэкспериментировать.
Насчет одной прокси - сам хочу так сделать, только вот фильтры такие (это для каталога товаров идет):
1. есть-нет на складе
2. есть-нет доп. скидка
3. по тов. группе
4. по торг. марке
5. по regExp в несколько уровней по разным столбцам
Пока писал понял, что ничего страшного, пожалуй упакую все это в одну проксю, фильтр по regExp -ам в QMap засуну да итератором пробегаться. Попробую, проверю
Записан
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #6 :
Январь 19, 2010, 08:36 »
если совсем извращаться,то можно на каждый фильтр сделать класс-обертку и в проксе оперировать со списком таких классов. Та же цепочка, но прокся одна.
Записан
voronElf
Гость
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #7 :
Январь 19, 2010, 11:59 »
Да, как вариант.
Только сама по себе эта цепочка появилась из-за реализации фильтра №5 (чтоб делать поиск в найденном) а тут прокатает QMap RegExp-ов, а остальные фильтры можно и кучей if -ов сделать в filterAcceptsRow (можт даже лучше получится, не тратить ресурсы на лишние вызовы функций и обход итераторов)
Записан
DS_tm
Гость
Re: Цепочка прокси-моделей. Общий сброс фильтров. Можно оптимизировать ?
«
Ответ #8 :
Январь 19, 2010, 18:22 »
Да точно лучше получится, реализация несложная, делал проксю на произвольное количество фильтров по значению строки, работоло быстро.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...