Qt实战案例(5)(序)——程序启动画面gif动图的实现

本文详细介绍了如何在Qt程序中使用QSplashScreen显示gif启动画面。通过创建QPixmap、QSplashScreen对象,结合QMovie和Label组件,实现了在启动过程中展示gif动画的效果。同时,提供了关键代码片段和完整的项目流程,包括资源文件的添加和main.cpp中的延时处理。文章最后展示了运行效果,并提供了完整代码的下载链接。
摘要由CSDN通过智能技术生成

在上一篇文章:Qt实战案例(5)——程序启动画面的实现(QSplashScreen)中遇到了一个问题:明明加载的是gif动画,为什么显示的时候只显示的静态图片???

本文将介绍如何在程序启动画面设置gif动图。

一、项目介绍

利用QSplashScreen类实现在程序启动过程中显示gif动图的功能。

二、项目基本配置

新建一个Qt案例,项目名称为“SplashScreen”,基类选择“QMainWindow”,取消创建UI界面复选框的选中状态,完成项目创建。

三、UI界面设计

无UI界面

四、主程序实现

4.1 mainwindow.h头文件

无需操作

4.2 mainwindow.cpp源文件

设置主界面实现,主要内容为:设置窗口标题,设置显示文字等。
核心代码如下:

#include<QTextEdit>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle("Splash Example");//设置窗口标题
    QTextEdit *edit=new QTextEdit;//新建可编辑文本
    edit->setText("Splash Example!");//显示内容
    setCentralWidget(edit);//将edit设置为中心部件
    resize(600,450);//调整窗体大小
}

显示内容如下:
在这里插入图片描述

4.3 main.cpp源文件

在编写main.cpp之前,首先需要添加资源文件,资源文件添加十分简单,这里不进行详细介绍,我的代码中将图片r.gif添加到Qt资源文件res中,如下所示。
在这里插入图片描述
然后编写main.cpp代码。首先需要创建一个QPixmap对象存放gif动画,其尺寸是gif的尺寸,然后利用QPixmap对象创建一个QSplashScreen对象,接着创建一个Label放置该动图,利用QMovie创建gif对象,核心代码如下:

    QApplication a(argc, argv);
    QPixmap pixmap(250,160);//gif动画的尺寸大小
    QSplashScreen splash(pixmap);//利用QPixmap对象创建一个QSplashScreen对象
    QLabel label(&splash);

    //设置label大小和位置
    QMovie mv(":/res/r.gif");
    label.setMovie(&mv);
    mv.start();
    //显示此启动图片
    splash.show();
    splash.setCursor(Qt::BlankCursor);
    for (int i = 0; i < 3000; i += mv.speed()) {
      a.processEvents(); //使程序在显示启动画面的同时仍能响应鼠标等其他事件
      Sleep(mv.speed()); // 延时
    }


    MainWindow w;
    w.show();

    splash.finish(&w); //在主体对象初始化完成后结束启动动画

    return a.exec();

由于启动画面通常在程序初始化时间较长的情况下出现,为了使程序初始化时间加长以显示启动画面,此处调用Sleep()函数,进行休眠。
【注意】:调用Sleep()函数之前需要首先声明头文件,如果是windows平台,则需要

#include <windows.h>

如果是linux平台,则需要:

#include <sys/stat.h>

五、效果演示

在这里插入图片描述
如果没有看懂的话,完整代码可以参考:https://download.csdn.net/download/didi_ya/71924826


ok,以上便是文章的全部内容了,如果对你有所帮助,记得点个赞哟~

参考文章:
https://blog.csdn.net/luolaihua2018/article/details/121401532

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wendy_ya

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值