Russian Qt Forum
Ноябрь 22, 2024, 18:56
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
(РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? - ЧТО В Qt 5.х?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: (РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? - ЧТО В Qt 5.х? (Прочитано 4629 раз)
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
(РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem? - ЧТО В Qt 5.х?
«
:
Февраль 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
Сообщений: 1805
Re: Как нарисовать анимированный GIF поверх QGraphicsItem?
«
Ответ #1 :
Февраль 04, 2015, 21:19 »
А ведь можно на сцену виджеты размещать
Посмотрите
QGraphicsProxyWidget
.
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Как нарисовать анимированный GIF поверх QGraphicsItem?
«
Ответ #2 :
Февраль 04, 2015, 22:26 »
Цитата: gil9red от Февраль 04, 2015, 21:19
А ведь можно на сцену виджеты размещать
Посмотрите
QGraphicsProxyWidget
.
Да вроде бы можно, но мне надо, чтобы они были привязаны к обычным айтемам и рисовались в тех же местах, где обычные айтемы, и в координатах этих айтемов. И тут не ясно - то ли parent айтем достаточно этим прокси задавать, и этого будет достаточно, то ли контейнер QGraphicsItemGroup надо использовать. Влоб не работает ни то, ни другое. Хотелось бы пообщаться с теми, кто делал и это работало, а не кто только документацию прочел. Я её сам прочел...
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: Как нарисовать анимированный GIF поверх QGraphicsItem?
«
Ответ #3 :
Февраль 05, 2015, 01:16 »
В общем, получилось с простой привязкой QGraphicsProxyWidget со встроенной в него анимацией к обычным старым айтемам, как к родителям.
Записан
2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
Offline
Сообщений: 1442
Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12
Re: (РЕШЕНО) Как нарисовать анимированный GIF поверх QGraphicsItem?
«
Ответ #4 :
Февраль 05, 2015, 17:40 »
up
Кто работает с Qt 5.х и делает похожие вещи - плз, проверьте. В 4.7 есть бажок - QMovie после создания с инициализатором в виде анимированного гифа цепляет характеристики картинки только из
первого кадра
. В результате при первом запуске появляется только кусочек анимации. При остановке он пересчитывает размеры и далее анимация видна полностью. Лечится последовательным вызовом QMovie::start() и QMovie::stop(). Меня очень интересует - исправлен ли этот баг в последующих версиях.
Записан
2^7-1 == 127, задумайтесь...
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...