Hello,大家好,好久没有更新文章了,有人问我,“为什么还没有更新文章,我们都还在等着呢”,我也不知道该如何回答,可能是我太懒了吧,曾有段时间想要放弃,但是男人总不能轻言放弃,说过的话必须兑现,还有那么多可爱的小伙伴支持我,所以从今天开始继续为大家分享Qt。

这次我们来演示一个应用程序启动时,添加启动动画的小例子。

所谓启动动画,就是说当一个应用程序启动时,在展示主窗口之前,有可能会先去初始化一些运行环境,验证用户信息等前提工作。那么在这段空闲期程序的启动过程是没有用户界面的,而用户也无法得知程序的状态,所以就需要在这段空白时间中,向用户提供一个展示程序运行状态的窗口,来为用户提供积极的正反馈。

启动动画在很多软件中得到了应用,例如游戏加载画面,VS的启动画面等。

当然,强大的Qt也为我们提供了启动动画的相关接口,即QSplashScreen,下面代码是实现启动动画的一个简单例子:

main.cpp

#include #include

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

//创建启动动画类实例,使用资源文件splash.jpg作为展示图片 QSplashScreen splash(QPixmap(":/splash.jpg"));

splash.show();

QWidget w;

w.show();

splash.finish(&w);

return a.exec();

}

然后运行程序,出现启动动画效果,然后出现主窗口。

但此时动画一闪而过,那是因为程序什么都没有做,为此再模拟一个读取数据库数据的代码,以加长启动时间。

main.cpp

#include #include

class DataBase

{

public:

void readData()

{

for (int i = 0; i < 100000; ++i)

{

qDebug("reading data");

}

}

};

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QSplashScreen splash(QPixmap(":/splash.jpg"));

splash.show();

DataBase db;

db.readData();

QWidget w;

w.show();

splash.finish(&w);

return a.exec();

}

在正常情况下,仅仅提供一张图片对用户其实是不友善的,所以我们还可以添加一个进度条来标识应用程序的启动状态。添加一个SplashScreen类

splashscreen.h

#ifndef SPLASHSCREEN_H#define SPLASHSCREEN_H

#include #include

namespace Ui {

class SplashScreen;

}

class SplashScreen : public QSplashScreen

{

Q_OBJECT

public:

explicit SplashScreen(QPixmap pixmap, QWidget *parent = 0);

~SplashScreen();

//设置进度区间 void setRange(int min, int max);

public slots:

//更新进度 void updateProgress(int num);

void showProgressMessage(int total, const QString& msg);

private:

Ui::SplashScreen *ui;

QProgressBar *bar; //进度条};

#endif// SPLASHSCREEN_H

splashscreen.cpp

#include #include "splashscreen.h"#include "ui_splashscreen.h"

SplashScreen::SplashScreen(QPixmap pixmap, QWidget *parent) :

QSplashScreen(parent, pixmap),

ui(new Ui::SplashScreen)

{

ui->setupUi(this);

bar = new QProgressBar(this);

//设置进度条的位置 bar->setGeometry(0,pixmap.height()-50,pixmap.width(),30);

resize(pixmap.size());

}

SplashScreen::~SplashScreen()

{

delete ui;

}

void SplashScreen::setRange(int min, int max)

{

bar->setRange(min, max);

}

void SplashScreen::updateProgress(int num)

{

bar->setValue(num);

}

void SplashScreen::showProgressMessage(int total, const QString &msg)

{

bar->setRange(0, total);

showMessage(msg);

}

database.h

#ifndef DATABASE_H#define DATABASE_H

#include #include

class DataBase : public QObject

{

Q_OBJECT

public:

explicit DataBase(QObject *parent = 0);

void readData();

signals:

void readingData(int num);

void startReadData(int total, const QString& msg);

};

#endif// DATABASE_H

database.cpp

#include "database.h"

DataBase::DataBase(QObject *parent) : QObject(parent)

{

}

void DataBase::readData()

{

int max = 10000;

emit startReadData(max, "is reading data");

for (int i = 0; i < max; ++i)

{

emit this->readingData(i);

qDebug("reading data");

}

}

main.cpp

#include #include "splashscreen.h"#include "database.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

SplashScreen splash(QPixmap(":/splash.jpg"));

splash.show();

a.processEvents();

DataBase db;

QObject::connect(&db, SIGNAL(startReadData(int, QString)),

&splash, SLOT(showProgressMessage(int,QString)));

QObject::connect(&db, SIGNAL(readingData(int)),

&splash, SLOT(updateProgress(int)));

db.readData();

QWidget w;

w.show();

splash.finish(&w);

return a.exec();

}

运行效果:

好了,这次的分享就到这里,我们下次再见,最后不要忘记点赞和分享哦,您的支持就是对原创,分享的最大鼓励。

欢迎关注微信公众号-小豆君Qt分享

qt设置开机启动动画_Qt实现程序启动动画相关推荐

  1. java 启动参数 配置,java程序启动参数设置

    有些时候我们需要在java程序启动时设置一些系统属性值,然后程序启动后可以获取这些系统属性值并进行一些逻辑处理.例如我们在使用Maven打包的时候如果想跳过test执行,可以使用如下命令: mvn c ...

  2. java程序 启动慢_spring boot 程序启动缓慢的问题

    今天发现一台服务器上的springboot程序启动特别慢,完全启动起来用了有好几分钟.刚开始以为是代码写的有问题造成了卡死,直到看到这条log: 2017-03-08 10:06:49.600 INF ...

  3. 华硕主板如何设置开机自启_华硕主板启动项怎么设置

    台湾华硕电脑股份有限公司是目前全球第一大主板生产商.全球第三大显卡生产商,同时也是全球领先的3C解决方案提供商之一,致力于为个人和企业用户提供最具创新价值的产品及应用方案.下面我们就来为大家介绍一下华 ...

  4. qt设置文本背景透明_Qt修改图片的背景色及设置背景色为透明的方法

    先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...

  5. 微信小程序动画效果,小程序animation动画

    微信小程序动画效果 最近一直在做小程序开发,在官方文档中无意间看到过渡动画效果,我就有点小激动,用每一个开发框架的时候我都最先研究动画和过渡 闲来无事写了一个小demo <!--wxml代码-- ...

  6. iOS开发UI篇 程序启动原理和UIApplication

    2019独角兽企业重金招聘Python工程师标准>>> 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplicati ...

  7. QT5.9学习笔记之——程序启动画面

    多数大型应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失.程序启动画面可以显示相关产品的一些信息,使用户在等待程序启动的同了解相关产品的功能,这也是一个宣传的方式.Qt中提供的 ...

  8. novnc的安装和设置开机自启

    一.安装和使用novnc 1. 下载noNVC git clone https://github.com/novnc/noVNC.git 2.创建安装连接 VNC的默认会话不是安全的,需要创建一个安全 ...

  9. mysql启动选项只读_MySQL的启动选项和系统变量该如何配置?

    MySQL的配置信息可以通过两种方式实现,一种是命令行形式,在启动MySQL服务时后边带上相关配置参数,此种方式会在MySQL重启后失效.另外一种是通过写入配置文件,如my.cnf,启动或者重启MyS ...

  10. 命令 启动顺序_笔记一: 启动选项与系统变量

    启动选项(startup options) 定义: MySQL有很多设置项,如存储引擎,客户端连接数量,缓存大小等,这些设置项在配置文件中都有默认值,在启动MySQL时可以在启动命令后面加一些参数来修 ...

最新文章

  1. 在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行
  2. 数据库记录的添加、修改、删除(DataAdapter、DataTable 、DataRow )
  3. 再次聊聊游戏测试中的bug:bug层级划分与分析
  4. 服务降级,服务熔断,服务限流
  5. 3.5.2 冒泡排序类
  6. 客户端显示服务器图片不显示,客户端请求服务器图片不显示
  7. Typedef的一些用法总结
  8. 熊猫分发_熊猫重命名列和索引
  9. R语言将数据框中的字符类型数字转换为数值
  10. java的安装_java 安装步骤
  11. linux系统刷机教程,在 Linux 刷 BIOS
  12. signature=04e0c5d9acfe5aef92fda679f27fba71,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  13. Hello 中国,Go官网回归中国
  14. html作品简介代码,HTML5的标签的代码的简单介绍 HTML5标签的简介
  15. 【java】生成13位条形码(Ean-13码)
  16. 已知坐标增量求坐标方位角_桥梁桩基坐标计算原理
  17. DCA1000 Training Video(DCA1000培训视频)
  18. 企业级利器,阿里云 NVMe 盘和共享存储
  19. stm32_HAL库中__weak修饰符
  20. 联想智能引擎:智能降噪让声音更清晰入耳

热门文章

  1. 【wikioi】1014 装箱问题
  2. Hadoop入门到精通(不断更新中。。。。)
  3. 一种网页倒计时的实现
  4. 浙江工业大学校赛 XiaoWei的战斗力
  5. 图片处理应用:固定容器缩略图实现
  6. 字符串和二进制数组转换、将HTML文件显示为页面的一部分、UTF8和GB2312之间的转换...
  7. 【动漫推荐】Specail A--特优生
  8. python3.7如何使用enum_python3 enum模块
  9. 路由器与交换机怎么插线_网络设备:中继器、集线器、网桥、交换机、路由器、网关的超全总结!...
  10. SQL Server添加Check约束