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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: (РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? - ЧТО В Qt 5.х?  (Прочитано 4637 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Февраль 04, 2015, 17:00 »

На сцене есть разбросанные графические айтемы. Над некоторыми из них нужно при определенных обстоятельствах рисовать анимированные изображения. Из документации видно, что анимированные гифы поддерживаются с помощью QMovie и QLabel. Там всё понятно, когда такой гиф надо разместить на кнопке или другом объекте, который QWidget. Но не понятно, как сделать это на объектах, наследующих QGraphicsItem. Виджетами такие объекты не являются. Они рисуются внутри виртуального метода paint(...). Как внутри него нарисовать QLabel - не ясно. Очевидно, по дороге преобразовывать в QPixmap не имеет смысла - будет рисоваться только 1й кадр анимации. Для QLabel нужен QWidget-родитель.

Наследовать айтемы на сцене еще и от QWidget? Как-то дюже громоздко получается... Или может есть другой обходной способ рисовать анимированные гифки на QGraphicsScene?
« Последнее редактирование: Февраль 23, 2015, 22:51 от Гурман » Записан

2^7-1 == 127, задумайтесь...
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Февраль 04, 2015, 21:19 »

А ведь можно на сцену виджеты размещать Подмигивающий
Посмотрите QGraphicsProxyWidget.
Записан

Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Февраль 04, 2015, 22:26 »

А ведь можно на сцену виджеты размещать Подмигивающий
Посмотрите QGraphicsProxyWidget.

Да вроде бы можно, но мне надо, чтобы они были привязаны к обычным айтемам и рисовались в тех же местах, где обычные айтемы, и в координатах этих айтемов. И тут не ясно - то ли parent айтем достаточно этим прокси задавать, и этого будет достаточно, то ли контейнер QGraphicsItemGroup надо использовать. Влоб не работает ни то, ни другое. Хотелось бы пообщаться с теми, кто делал и это работало, а не кто только документацию прочел. Я её сам прочел...
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #3 : Февраль 05, 2015, 01:16 »

В общем, получилось с простой привязкой QGraphicsProxyWidget со встроенной в него анимацией к обычным старым айтемам, как к родителям.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Февраль 05, 2015, 17:40 »

up

Кто работает с Qt 5.х и делает похожие вещи - плз, проверьте. В 4.7 есть бажок - QMovie после создания с инициализатором в виде анимированного гифа цепляет характеристики картинки только из первого кадра. В результате при первом запуске появляется только кусочек анимации. При остановке он пересчитывает размеры и далее анимация видна полностью. Лечится последовательным вызовом QMovie::start() и QMovie::stop(). Меня очень интересует - исправлен ли этот баг в последующих версиях.
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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