c++ - qmovie - GIF animation in Qt




qt create animated gif (3)

I have used QGraphicsView, QGraphicsScene classes in order to show a picture in a widget like this:

m_Scene->addPixmap(QPixmap(fileName));
m_View->setScene(m_Scene);

How I can show .gif animation in the same scene?

https://code.i-harness.com


http://doc.qt.io/qt-5/qmovie.html

google and Qt docs are your friend. There's even have an example.

PS: unless you're in China, then google is unaccessible, but you'd have stuff like Bing and doc.qt.io.com.

PS2: for a little more in-depth answer: you can use a QGraphicsProxyWidget of a QLabel which has a QMovie via QLabel::setMovie. There's probably an easier/shorter way to do it.


Give the proper path of resource look like as below code

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();

I put this here in case someone other than me runs into the same problem.

Problem

The GIF would not load and isValid() returns false.

Code

// 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(); 

Solution

To solve this, I had to put Qt's GIF-plugin qgif4.dll in a folder named imageformats next to my exe to be able to use GIFs.

The dll can be found under /plugins/imageformats/qgif4.dll.