需要你自己提前设置好动图的位置,本例中存放于"/Users/PLA/PLA/PLA.gif
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QMovie>
#include <QLabel>
class Widget : public QWidget {
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget(); // 添加析构函数以确保资源被正确释放
private:
QLabel *label;
QMovie *movie;
};
#endif // WIDGET_H
main.cpp
#include <QApplication>
#include "widget.h"
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
Widget w;
w.show();
return app.exec();
}
widget.cpp
#include "widget.h"
#include <QVBoxLayout>
Widget::Widget(QWidget *parent) : QWidget(parent), label(new QLabel(this)), movie(new QMovie("/Users/PLA/PLA/PLA.gif", QByteArray(), this)) //这里是需要你自己去调整动图的路径{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(label);
label->setMovie(movie);
movie->setCacheMode(QMovie::CacheAll);
QObject::connect(movie, &QMovie::frameChanged, [this](int frameNumber) {
if (movie->loopCount() == 0 && frameNumber == movie->frameCount() - 1) {
movie->stop();
}
});
movie->start();
// 调整QLabel的大小和位置(如果需要的话)
// 例如:label->resize(400, 300); // 注意:这可能会覆盖布局管理器设置的大小
}
Widget::~Widget() {
}
效果图: