需要你自己提前设置好动图的位置,本例中存放于"/Users/PLA/PLA/PLA.gif
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMovie>
#include <QLabel>class Widget : public QWidget {Q_OBJECTpublic: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() { }
效果图: