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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Анимация в делегате  (Прочитано 15531 раз)
andrew.k
Гость
« : Июль 24, 2012, 13:43 »

Как такое реализовать красиво?
Записан
Bepec
Гость
« Ответ #1 : Июль 24, 2012, 13:45 »

QPropertyAnimation ты и сам знаешь, думаю.

А что именно хочешь красивого? появление/изменение/отображение?
Записан
andrew.k
Гость
« Ответ #2 : Июль 24, 2012, 14:03 »

QPropertyAnimation ты и сам знаешь, думаю.

А что именно хочешь красивого? появление/изменение/отображение?
Я боялся, что ты ответишь Улыбающийся
Записан
andrew.k
Гость
« Ответ #3 : Июль 24, 2012, 14:05 »

Посмотри внимательно на название темы.

А что именно хочешь красивого? появление/изменение/отображение?
Нужна не анимация красивая, а красивая реализация, т.к. корявое решение худо-бедно можно выдумать.
Записан
Bepec
Гость
« Ответ #4 : Июль 24, 2012, 14:09 »

Ну тогда тебе такой ответ - наиболее красиво будет со своей отрисовкой.

Наиболее незатратно - QPropertyAnimation.

PS что анимировать то собрался?
Записан
andrew.k
Гость
« Ответ #5 : Июль 24, 2012, 14:13 »

Ну тогда тебе такой ответ - наиболее красиво будет со своей отрисовкой.

Наиболее незатратно - QPropertyAnimation.
Лицо рука.
Записан
andrew.k
Гость
« Ответ #6 : Июль 24, 2012, 14:18 »

Нашел статью на эту тему.
Но не понимаю по-питонски.

Хотелось бы понять концепцию. На сколько я понял автор вызывает, update у вьюхи, заставляя её целиком перерисовываться.
Если так, то это грустный метод.
Записан
andrew.k
Гость
« Ответ #7 : Июль 24, 2012, 14:35 »

Нашел еще одного такого же мученика. Читаю.
Записан
Bepec
Гость
« Ответ #8 : Июль 24, 2012, 14:41 »

Интересно. Ток название надо было чуть подробнее - как сделать анимированную картинку в делегате Улыбающийся А то анимации в мире много.

Как своё могу предложить просто отдавать в модели картинку, меняющуюся по таймеру. А другие способы вон в последней теме вроде описаны.

Записан
andrew.k
Гость
« Ответ #9 : Июль 24, 2012, 14:49 »

Интересно. Ток название надо было чуть подробнее - как сделать анимированную картинку в делегате Улыбающийся А то анимации в мире много.
я тебе даже сказал: "перечитай название темы". Но тебе нужно написать хоть что-нибудь, даже не разбираясь в смысле ни проблемы, ни тобой написанного.
Впрочем как всегда.

А другие способы вон в последней теме вроде описаны.
О! Спасибо за наводку! Реально помог.
Записан
andrew.k
Гость
« Ответ #10 : Июль 24, 2012, 15:39 »

Вывод такой: делегат не способен отображать анимацию (что в общем-то было понятно сразу).

Придумал такую концепцию: анимацией будет все-таки управлять модель. А а уже дело делегата рисовать анимацию или нет.
Поэтому без этой связки не обойтись. Соответственно модель при возникновении анимации будет отправлять периодически dataChanged, чтобы делегат имел возможность перерисовать ячейку. Тут ничего необычного в общем.
Теперь фокус. Т.к. в моей модели не используется колонка в индексе, то можно использовать ее для передачи флага от модели к делегату. По этому флагу делегат может определить нужна ли отрисовка целиком ячейки, либо только анимированной части.
Это даст выигрыш в производительности в случае если метод paint сильно нагружен и если сразу много анимированных ячеек.

Можно извратиться еще больше и использовать отрицательный значения в индексе. Но это уже хз. Возможно приведет к каким-нибудь трудностям.

Пока это только теория. Буду пробовать.
Записан
vregess
Гость
« Ответ #11 : Июль 24, 2012, 16:53 »

ИМХО это бредовая идея - перекладывать на модель анимацию. Ведь модель по сути не изменяет свое состояние?
Отображением должен заниматься View (и делегаты).
Я бы посоветовал сделать какой-нить QTimedView в котором есть таймер, API для регистрации делегатов с анимацией.
По таймауту пинать делегатов. Такая вот общая идея.
Записан
Bepec
Гость
« Ответ #12 : Июль 24, 2012, 17:10 »

Тогда уж вообще пойдём в крайность - создать класс, выводящий анимацию по координатам, получаемым от делегатов Веселый
Записан
andrew.k
Гость
« Ответ #13 : Июль 24, 2012, 17:15 »

Тогда уж вообще пойдём в крайность - создать класс, выводящий анимацию по координатам, получаемым от делегатов Веселый
Я же тебя уже поблагодарил за посильную помощь.
Записан
andrew.k
Гость
« Ответ #14 : Июль 24, 2012, 17:23 »

ИМХО это бредовая идея - перекладывать на модель анимацию. Ведь модель по сути не изменяет свое состояние?
Не особенно бредовая, в условиях необходимости, имхо. По сути да не меняет.
Представь что это модель состояний каких-нибудь датчиков, где в одной из колонок меняется параметр, есть сигнал-нет сигнала. Состояние меняется часто.
А делегат рисует данные двух колонок в одной Шокированный В итоге видим анимацию.

Я бы посоветовал сделать какой-нить QTimedView в котором есть таймер, API для регистрации делегатов с анимацией.
По таймауту пинать делегатов. Такая вот общая идея.
Ты не можешь пинать делегатов, ты можешь пинать только вьюху, а вьюха пинает делегатов. Это раз.
Обновить ты можешь только ячейку, а если код отрисовки громоздкий, то это потеря производительности. Это два.

Если готов обсуждать этот вопрос, прочти тему по последней ссылке, а то повторяем то, что и так ясно. И если будет, что добавить милости просим.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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