赞
踩
在上一篇文章:Qt实战案例(5)——程序启动画面的实现(QSplashScreen)中遇到了一个问题:明明加载的是gif动画,为什么显示的时候只显示的静态图片???
本文将介绍如何在程序启动画面设置gif动图。
利用QSplashScreen类实现在程序启动过程中显示gif动图的功能。
新建一个Qt案例,项目名称为“SplashScreen”,基类选择“QMainWindow”,取消创建UI界面复选框的选中状态,完成项目创建。
无UI界面
无需操作
设置主界面实现,主要内容为:设置窗口标题,设置显示文字等。
核心代码如下:
#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);//调整窗体大小
}
显示内容如下:
在编写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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。