Название: (РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? - ЧТО В Qt 5.х? Отправлено: Гурман от Февраль 04, 2015, 17:00 На сцене есть разбросанные графические айтемы. Над некоторыми из них нужно при определенных обстоятельствах рисовать анимированные изображения. Из документации видно, что анимированные гифы поддерживаются с помощью QMovie и QLabel. Там всё понятно, когда такой гиф надо разместить на кнопке или другом объекте, который QWidget. Но не понятно, как сделать это на объектах, наследующих QGraphicsItem. Виджетами такие объекты не являются. Они рисуются внутри виртуального метода paint(...). Как внутри него нарисовать QLabel - не ясно. Очевидно, по дороге преобразовывать в QPixmap не имеет смысла - будет рисоваться только 1й кадр анимации. Для QLabel нужен QWidget-родитель.
Наследовать айтемы на сцене еще и от QWidget? Как-то дюже громоздко получается... Или может есть другой обходной способ рисовать анимированные гифки на QGraphicsScene? Название: Re: Как нарисовать анимированный GIF поверх QGraphicsItem? Отправлено: gil9red от Февраль 04, 2015, 21:19 А ведь можно на сцену виджеты размещать ;)
Посмотрите QGraphicsProxyWidget (http://qt-project.org/doc/qt-4.8/qgraphicsproxywidget.html). Название: Re: Как нарисовать анимированный GIF поверх QGraphicsItem? Отправлено: Гурман от Февраль 04, 2015, 22:26 А ведь можно на сцену виджеты размещать ;) Посмотрите QGraphicsProxyWidget (http://qt-project.org/doc/qt-4.8/qgraphicsproxywidget.html). Да вроде бы можно, но мне надо, чтобы они были привязаны к обычным айтемам и рисовались в тех же местах, где обычные айтемы, и в координатах этих айтемов. И тут не ясно - то ли parent айтем достаточно этим прокси задавать, и этого будет достаточно, то ли контейнер QGraphicsItemGroup надо использовать. Влоб не работает ни то, ни другое. Хотелось бы пообщаться с теми, кто делал и это работало, а не кто только документацию прочел. Я её сам прочел... Название: Re: Как нарисовать анимированный GIF поверх QGraphicsItem? Отправлено: Гурман от Февраль 05, 2015, 01:16 В общем, получилось с простой привязкой QGraphicsProxyWidget со встроенной в него анимацией к обычным старым айтемам, как к родителям.
Название: Re: (РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? Отправлено: Гурман от Февраль 05, 2015, 17:40 up
Кто работает с Qt 5.х и делает похожие вещи - плз, проверьте. В 4.7 есть бажок - QMovie после создания с инициализатором в виде анимированного гифа цепляет характеристики картинки только из первого кадра. В результате при первом запуске появляется только кусочек анимации. При остановке он пересчитывает размеры и далее анимация видна полностью. Лечится последовательным вызовом QMovie::start() и QMovie::stop(). Меня очень интересует - исправлен ли этот баг в последующих версиях. |