Qt设置软件启动动画(支持图片和视频俩种方式)

news2024/10/7 12:19:10

目录

  • 软件启动动画效果
    • 静态背景
    • 动态背景
  • 程序启动动画
  • QSplashScreen
  • 启动时加载静态图片
  • 启动时加载视频动画
  • 将启动动画置于所有窗口顶层


软件启动动画效果

先来看效果。下面录制了加载图片和gif动图的俩种效果。

静态背景

在这里插入图片描述

动态背景

这里我加载了一个gif的动图,你也可以使用一段录制好的视频。
在这里插入图片描述

程序启动动画

许多应用程序都会在启动的时候显示一个程序启动画面(splash screen) , l
可以使用程序启动画面对缓慢的启动过程进行掩饰,还可以用于满足审美要求进行添加。使用QSplashScreen类,可以非常容易地为Qt应用程序添加一个程序启动画面。

QSplashScreen

QSplashScreen类会在应用程序的主窗口出现之前显示一个图片。它也可以在这个图片上显示一些消息,用来通知用户有关应用程序初始化的过程。通常,程序启动画面的代码会放在main()函数中,位于QApplication: : exec()调用之前。

在使用前,先介绍几个重要的方法。
setPixmap用来加载静态图片的。
showMessage用来显示加载时需要说明的文字以及显示位置。
finish用来绑定启动画面与主界面,当主界面初始化完毕后自动销毁启动动画。

启动时加载静态图片

#include "mainwindow.h"

#include <QApplication>
#include <QDateTime>
#include <QLabel>
#include <QMovie>
#include <QSplashScreen>
#include <QThread>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplashScreen* splash = new QSplashScreen();

    splash->setPixmap(QPixmap(":/load.png"));
    splash->show();

    splash->showMessage(QObject::tr("load..."), Qt::AlignCenter, Qt::red);

    QDateTime time = QDateTime::currentDateTime();
    QDateTime currentTime = QDateTime::currentDateTime(); //记录当前时间
    int i = 0;
    while (time.secsTo(currentTime) <= 3) 
    {
        a.processEvents();
        splash->showMessage(QObject::tr("load."), Qt::AlignCenter, Qt::red);
        QThread::msleep(200);
        splash->showMessage(QObject::tr("load.."), Qt::AlignCenter, Qt::red);
        QThread::msleep(200);
        splash->showMessage(QObject::tr("load..."), Qt::AlignCenter, Qt::red);
        QThread::msleep(200);
        currentTime = QDateTime::currentDateTime();

    };
    MainWindow w;

    w.show();
    splash->finish(&w);
    return a.exec();
}

启动时加载视频动画

#include "mainwindow.h"

#include <QApplication>
#include <QDateTime>
#include <QLabel>
#include <QMovie>
#include <QSplashScreen>
#include <QThread>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplashScreen* splash = new QSplashScreen();
    
    QLabel label(reinterpret_cast<QWidget*>(splash));
    QMovie mv(":/load.gif");
    label.setMovie(&mv);
    mv.start();
    splash->show();
    splash->setCursor(Qt::BlankCursor);
    for (int i = 0; i < 3000; i += mv.speed()) {
        a.processEvents(); //防止界面出现无响应
        qDebug() << QString::number(mv.speed());
        QThread::msleep(mv.speed()); 
    }
    MainWindow w;

    w.show();
    splash->finish(&w);
    return a.exec();
}

将启动动画置于所有窗口顶层

这里引用一些Qt帮助手册的一段说明

启动画面出现在屏幕中央。添加Qt::WindowStaysOnTopHint到splash小部件的窗口标志可能是有用的,如果你想让它在桌面上的所有其他窗口之上。一些X11窗口管理器不支持“停留在顶部”标志。一个解决方案是设置一个计时器,定期调用启动屏幕上的raise()来模拟“停留在顶部”的效果。
最常见的用法是在主小部件显示在屏幕上之前显示一个闪屏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AMBA AHB的burst termination

前言 在AMBA AHB协议中&#xff0c;AHB master可以用burst传输连续取多笔数据。AHB定义了4、8和16拍的burst传输、未定义长度的burst传输和单次传输。Burst传输中支持incrementing和wrapping。 Incrementing burst用于访问顺序的memory地址&#xff0c;burst中每个拍的地址都…

数据压缩的常用手段以及方法

0. 简介 之前我们在《经典文献阅读之–R-PCC(基于距离图像的点云压缩方法)》中提到了&#xff0c;我们可以通过一些算法层面来完成数据的压缩&#xff0c;而其实更简单或者说更直接的方法就是使用half这种形式来完成数据压缩。 1. half和float Half是用16位表示浮点数的一种…

什么是 FL Studio?2023年最新版 FL Studio21.0.3.3517中文版图文安装教程

什么是 FL Studio&#xff1f; FL Studio 是一个数字音频工作站 (DAW)。该软件借助各种编辑工具、插件和效果&#xff0c;让您可以录制、混音和掌握高度复杂的音乐作品。FL Studio 还允许您注册和编辑 MIDI 文件&#xff0c;您可以在众多可用乐器之一上演奏这些文件。FL Studi…

树莓派 python3.9降级为python3.7

今天烧录了一个官方烧录器中的最新的镜像&#xff0c;打开之后python的版本是3.9的&#xff0c;之前做的一些东西都是基于python3.7的&#xff0c;再重新架构十分麻烦&#xff0c;于是干脆就把python3.9进行降级&#xff0c;降为python3.7. 这个镜像不像之前的一些镜像&#x…

通用商城项目(上)

通用型产品&#xff08;电商&#xff09;发布解决方案落地实现&#xff08;基于分布式微服务技术栈&#xff1a; SpringBootSpring CloudSpring Cloud Alibaba VueElementUl MyBatis-Plus MySQL Git Maven Linux Nginx Docker 前后端分离&#xff09; 项目技术栈和前置技术 项…

【软件设计师暴击考点】操作系统知识高频考点暴击系列【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

Web网页制作-知识点(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接

目录 HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 标题标签 段落、换行、水平线 图片 图片路径* 超链接 HTML5介绍 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后缀以.html结尾 HTML是一种标记语言&#xff0c;标…

自动化神器AutoIt,告别重复劳动

概要 计算机已经进入大众家庭多年&#xff0c;它给我们带来了便利&#xff0c;却也带来了枯燥、重复、机械的重复工作。今天&#xff0c;我要和大家分享一款自动化工具AutoIt&#xff0c;它能够帮助你告别这些烦恼&#xff0c;并提高工作效率。 AutoIt 是一款完全免费的Windows…

leetcode82. 删除排序链表中的重复元素 II(java)

删除排序链表中的重复元素 leetcode82. 删除排序链表中的重复元素 II题目描述一次遍历代码演示 链表专题 leetcode82. 删除排序链表中的重复元素 II 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-fr…

1.1 编写一个简单的C++程序

博主介绍&#xff1a;爱打游戏的计算机专业学生 博主主页&#xff1a;夏驰和徐策 所属专栏&#xff1a;夏驰和徐策带你从零开始学C 1.1.0 这段话告诉我们什么&#xff1f; 这段话解释了一个C程序中的main函数的基本结构和功能。 它告诉我们以下几点&#xff1a; 1. C程序的…

Debian11 编译bluez

之前的几篇文章写过如果编译x86和dv300 版本的bluez&#xff0c;不过那都是在 Centos7 上编译的。然而当我从taobao 上买了一个蓝牙适配器后发现无法使用&#xff08;淘宝客服说不支持Centos&#xff0c;只支持ubuntu 和 debian&#xff09;。再者 Centos 现在也停止支持服务了…

头歌网页设计与制作实训答案

我这里已经看不见原题目了&#xff0c;只粘贴了有Begin和End部分的代码&#xff0c;如果题目符合但答案不符合的的&#xff0c;欢迎在评论区找我。如果有帮助&#xff0c;请赞一个。注意看目录里有没有你需要的。 目录 一、HTML——基础 1.初识HTML: 简单的Hello World网页制…

程序员秋招最全Java面试题及答案整理(2023最新版)

前言 大家好&#xff0c;最近一个月&#xff0c;花了不少时间&#xff0c;给大家整理了一套 2023 的技术面试资料 包括各大厂最新面试题以及面经解析涉及JVM&#xff0c;Mysql&#xff0c;并发&#xff0c;Spring&#xff0c;Mybatis&#xff0c;Redis&#xff0c;RocketMQ&a…

Firefly-SRC资产探测平台

前言 Firefly是一个集资产管理、信息收集和漏洞扫描的综合平台。 Firefly-SRC依托于Firefly平台中的信息收集功能&#xff0c;不断收集和整理各大src相关资产数据。希望能为各位白帽子师傅们提供更稳定可靠的src资产数据&#xff0c;减少师傅挖洞前期的信息收集时间&#xff0c…

一体化个人门户Web Portal

什么是 Web Portal ? Web Portal 是一个一体化的 Web 仪表板&#xff0c;提供许多小部件来构建个人门户。具有加载外部插件的能力。对于那些只需要链接仪表板并希望使用 yaml 配置它的人来说&#xff0c;Lite 版是一个精简版本。 构建镜像 如果你不想自己构建&#xff0c;可以…

Qt的基本知识与应用

一、C梳理 1. 面向对象的三大特性 1.1 封装 把类的一些属性和细节隐藏&#xff08;private、protected&#xff09;&#xff0c;根据读写需要重新开放外部调用接口&#xff08;public、protected&#xff09;。 1.2 继承 在已有的类的基础上创建一个新的类&#xff0c;新的类拥…

最新AI创作系统V5.0.2+支持GPT4+支持ai绘画+实时语音识别输入+文章资讯发布功能+用户会员套餐

最新AI创作系统V5.0.2支持GPT4支持ai绘画实时语音识别输入文章资讯发布功能用户会员套餐&#xff01; AI创作系统一、源码系统介绍二、AI创作系统程序下载三、安装教程四、主要功能展示五、更新日志 AI创作系统 1、提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口 2、支持三种…

全网唯一正确的一部:GPT式网页上逐字输出像打字的效果用vue js实现全代码-使用SSE技术

GPT逐字显示效果 开篇 像这种屏幕上逐字输出,像一个机器人自动在屏幕上用传统的打印机或者说像“红警”、“COD”游戏里那种电传打字机逐字输出的效果是不是很酷? 其实,这种输出方式不仅仅只是酷,而是有着其设计原理性的东西存在的。GPT采用“逐字输出”的方式回答用户问…

Linux配置静态IP-包教包会(纯干货)

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 方法一&#xff1a;图形化操作 1 选用NAT模式 打开虚拟机软件VM主页&#xff0c;如图&#xff0c;点击编辑虚…