c++ - Animación GIF en Qt
qgraphicsscene (4)
Dale a la ruta de acceso apropiada de recursos el siguiente código
QMovie *movie=new QMovie(":/images/foo.gif");
if (!movie->isValid())
{
// Something went wrong :(
}
// Play GIF
label=new QLabel(this);
label->setGeometry(115,60,128,128);
label->setMovie(movie);
movie->start();
He usado las clases QGraphicsView
, QGraphicsScene
para mostrar una imagen en un widget como este:
m_Scene->addPixmap(QPixmap(fileName));
m_View->setScene(m_Scene);
¿Cómo puedo mostrar la animación .gif en la misma escena?
No utilizo la animación GIF con QGraphicsView
o QGraphicsScene
, la uso solo en QDialog
, pero creo que es lo mismo, así que aquí está mi código:
QMovie *movie = new QMovie(":/images/other/images/16x16/loading.gif");
QLabel *processLabel = new QLabel(this);
processLabel->setMovie(movie);
movie->start();
Mi loading.gif
tomé de this enlace.
PD: también verifique los ejemplos de Qt SDK. ¡Realmente pueden ayudar!
Puse esto aquí en caso de que alguien que no sea yo se encuentre con el mismo problema.
Problema
El GIF no se cargaría y isValid()
devuelve false
.
Código
// Load animated GIF
QMovie* movie = new QMovie("foo.gif");
// Make sure the GIF was loaded correctly
if (!movie->isValid())
{
// Something went wrong :(
}
// Play GIF
QLabel* label = new QLabel(this);
label->setMovie(movie);
movie->start();
Solución
Para resolver esto, tuve que poner Qt''s GIF-plugin qgif4.dll
en una carpeta llamada imageformats
junto a mi exe para poder usar GIFs.
El dll se puede encontrar en /plugins/imageformats/qgif4.dll
.
http://doc.qt.io/qt-5/qmovie.html
google y Qt docs son tus amigos. Incluso hay un example .
PD: a menos que estés en China, Google no es accesible, pero tendrás cosas como Bing y doc.qt.io.com .
PS2: para una respuesta un poco más profunda: puede usar un QGraphicsProxyWidget
de un QLabel
que tiene un QMovie
través de QLabel::setMovie
. Probablemente haya una manera más fácil / más corta de hacerlo.