c++ qt qgraphicsview

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.