Russian Qt Forum
Ноябрь 23, 2024, 14:10
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Model-View (MV)
>
Анимация в делегате
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Анимация в делегате (Прочитано 15545 раз)
andrew.k
Гость
Анимация в делегате
«
:
Июль 24, 2012, 13:43 »
Как такое реализовать красиво?
Записан
Bepec
Гость
Re: Анимация в делегате
«
Ответ #1 :
Июль 24, 2012, 13:45 »
QPropertyAnimation ты и сам знаешь, думаю.
А что именно хочешь красивого? появление/изменение/отображение?
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #2 :
Июль 24, 2012, 14:03 »
Цитата: Bepec от Июль 24, 2012, 13:45
QPropertyAnimation ты и сам знаешь, думаю.
А что именно хочешь красивого? появление/изменение/отображение?
Я боялся, что ты ответишь
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #3 :
Июль 24, 2012, 14:05 »
Посмотри внимательно на название темы.
Цитата: Bepec от Июль 24, 2012, 13:45
А что именно хочешь красивого? появление/изменение/отображение?
Нужна не анимация красивая, а красивая реализация, т.к. корявое решение худо-бедно можно выдумать.
Записан
Bepec
Гость
Re: Анимация в делегате
«
Ответ #4 :
Июль 24, 2012, 14:09 »
Ну тогда тебе такой ответ - наиболее красиво будет со своей отрисовкой.
Наиболее незатратно - QPropertyAnimation.
PS что анимировать то собрался?
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #5 :
Июль 24, 2012, 14:13 »
Цитата: Bepec от Июль 24, 2012, 14:09
Ну тогда тебе такой ответ - наиболее красиво будет со своей отрисовкой.
Наиболее незатратно - QPropertyAnimation.
Лицо рука.
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #6 :
Июль 24, 2012, 14:18 »
Нашел
статью
на эту тему.
Но не понимаю по-питонски.
Хотелось бы понять концепцию. На сколько я понял автор вызывает, update у вьюхи, заставляя её целиком перерисовываться.
Если так, то это грустный метод.
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #7 :
Июль 24, 2012, 14:35 »
Нашел
еще
одного такого же мученика. Читаю.
Записан
Bepec
Гость
Re: Анимация в делегате
«
Ответ #8 :
Июль 24, 2012, 14:41 »
Интересно. Ток название надо было чуть подробнее - как сделать анимированную картинку в делегате
А то анимации в мире много.
Как своё могу предложить просто отдавать в модели картинку, меняющуюся по таймеру. А другие способы вон в последней теме вроде описаны.
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #9 :
Июль 24, 2012, 14:49 »
Цитата: Bepec от Июль 24, 2012, 14:41
Интересно. Ток название надо было чуть подробнее - как сделать анимированную картинку в делегате
А то анимации в мире много.
я тебе даже сказал: "перечитай название темы". Но тебе нужно написать хоть что-нибудь, даже не разбираясь в смысле ни проблемы, ни тобой написанного.
Впрочем как всегда.
Цитата: Bepec от Июль 24, 2012, 14:41
А другие способы вон в последней теме вроде описаны.
О! Спасибо за наводку! Реально помог.
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #10 :
Июль 24, 2012, 15:39 »
Вывод такой: делегат не способен отображать анимацию (что в общем-то было понятно сразу).
Придумал такую концепцию: анимацией будет все-таки управлять модель. А а уже дело делегата рисовать анимацию или нет.
Поэтому без этой связки не обойтись. Соответственно модель при возникновении анимации будет отправлять периодически dataChanged, чтобы делегат имел возможность перерисовать ячейку. Тут ничего необычного в общем.
Теперь фокус. Т.к. в моей модели не используется колонка в индексе, то можно использовать ее для передачи флага от модели к делегату. По этому флагу делегат может определить нужна ли отрисовка целиком ячейки, либо только анимированной части.
Это даст выигрыш в производительности в случае если метод paint сильно нагружен и если сразу много анимированных ячеек.
Можно извратиться еще больше и использовать отрицательный значения в индексе. Но это уже хз. Возможно приведет к каким-нибудь трудностям.
Пока это только теория. Буду пробовать.
Записан
vregess
Гость
Re: Анимация в делегате
«
Ответ #11 :
Июль 24, 2012, 16:53 »
ИМХО это бредовая идея - перекладывать на модель анимацию. Ведь модель по сути не изменяет свое состояние?
Отображением должен заниматься View (и делегаты).
Я бы посоветовал сделать какой-нить QTimedView в котором есть таймер, API для регистрации делегатов с анимацией.
По таймауту пинать делегатов. Такая вот общая идея.
Записан
Bepec
Гость
Re: Анимация в делегате
«
Ответ #12 :
Июль 24, 2012, 17:10 »
Тогда уж вообще пойдём в крайность - создать класс, выводящий анимацию по координатам, получаемым от делегатов
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #13 :
Июль 24, 2012, 17:15 »
Цитата: Bepec от Июль 24, 2012, 17:10
Тогда уж вообще пойдём в крайность - создать класс, выводящий анимацию по координатам, получаемым от делегатов
Я же тебя уже поблагодарил за посильную помощь.
Записан
andrew.k
Гость
Re: Анимация в делегате
«
Ответ #14 :
Июль 24, 2012, 17:23 »
Цитата: ck от Июль 24, 2012, 16:53
ИМХО это бредовая идея - перекладывать на модель анимацию. Ведь модель по сути не изменяет свое состояние?
Не особенно бредовая, в условиях необходимости, имхо. По сути да не меняет.
Представь что это модель состояний каких-нибудь датчиков, где в одной из колонок меняется параметр, есть сигнал-нет сигнала. Состояние меняется часто.
А делегат рисует данные двух колонок в одной
В итоге видим анимацию.
Цитата: ck от Июль 24, 2012, 16:53
Я бы посоветовал сделать какой-нить QTimedView в котором есть таймер, API для регистрации делегатов с анимацией.
По таймауту пинать делегатов. Такая вот общая идея.
Ты не можешь пинать делегатов, ты можешь пинать только вьюху, а вьюха пинает делегатов. Это раз.
Обновить ты можешь только ячейку, а если код отрисовки громоздкий, то это потеря производительности. Это два.
Если готов обсуждать этот вопрос, прочти тему по последней ссылке, а то повторяем то, что и так ясно. И если будет, что добавить милости просим.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...