Qt开发 — 显示gif动画
Qt 中,静态图片 PNG,JPG 等可以用其创建 QPixmap,调用 QLabel::setPixmap() 来显示,但是能够具有动画的 GIF 却不能这么做,要在 QLabel 上显示 GIF,需要借助 QMovie 来实现。
QLabel 显示 GIF
使用 GIF 图片的路径创建 QMovie 对象,并且调用 QMovie::start() 启动 GIF 动画,然后通过 QLabel::setMovie() 设置好动画对象后,就能在 QLabel 上看到 GIF 动画了。
#include <QApplication>
#include <QMovie>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel();
QMovie *movie = new QMovie("/Users/Biao/Desktop/x.gif");
label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
movie->start(); // 2. 启动动画
label->show();
return app.exec();
}
控制 GIF 动画循环次数
#include <QApplication>
#include <QMovie>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel();
QMovie *movie = new QMovie("/Users/Biao/Desktop/x.gif");
label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
movie->start(); // 2. 启动动画
label->show();
QObject::connect(movie, &QMovie::frameChanged, [=](int frameNumber) {
// GIF 动画执行一次就结束
if (frameNumber == movie->frameCount() - 1) {
movie->stop();
}
});
return app.exec();
}