QT实现GIF动图显示(小白版,可直接copy使用)

需要你自己提前设置好动图的位置,本例中存放于"/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() {  
    
}

效果图:

相关推荐
MC皮蛋侠客1 小时前
Google Test 单元测试指南
c++·单元测试·google test
●VON1 小时前
鸿蒙Flutter实战:分类管理页BottomSheet CRUD
数据库·flutter·华为·harmonyos·鸿蒙
Cosolar1 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
wanhengidc1 小时前
服务器租用有何优点
运维·服务器·安全·web安全
方也_arkling2 小时前
【Java-Day08】static / final / 枚举
java·开发语言
坤昱2 小时前
cfs调度类深入解刨——最新内核细节分析2
linux·服务器·cfs·cfs调度·eevdf调度·eevdf·kernel 7.1
艾莉丝努力练剑2 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约2 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
风吹夏回2 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei112 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构