当前位置: 首页 > news >正文

Qt 实现软件启动界面动画

实现软件启动界面,用到QSplashScreen类。

效果

启动界面

描述

QSplashScreen小部件提供了一个可以在应用程序启动期间显示的启动画面。
启动画面通常是在应用程序启动时显示的小部件。启动画面通常用于启动时间较长的应用程序(例如需要花费一些时间来建立连接的数据库或网络应用程序),以向用户提供应用程序正在加载的反馈信息。

启动画面会出现在屏幕的中央。如果希望将启动画面保持在所有其他窗口之上,在启动画面的窗口标志中添加Qt::WindowStaysOnTopHint可能会很有用。

一些X11窗口管理器不支持"窗口保持在顶部"标志。解决方法是设置一个定时器,定期对启动画面调用raise()函数,以模拟"窗口保持在顶部"的效果。

最常见的用法是在显示主窗口之前显示启动画面。
下面的代码片段演示了此用法,其中显示了一个启动画面并在显示应用程序的主窗口前执行一些初始化任务:

 main(int argc, char *argv[])
{QApplication app(argc, argv);QPixmap pixmap(":/splash.png");QSplashScreen splash(pixmap);splash.show();app.processEvents();...QMainWindow window;window.show();splash.finish(&window);return app.exec();
}

用户可以通过鼠标单击来隐藏启动画面。由于启动画面通常显示在事件循环开始运行之前,因此需要定期调用QApplication::processEvents()来接收鼠标点击事件。

有时候需要更新启动画面上的消息例如,在应用程序启动期间通知已经建立的连接或加载的模块:

QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSScreen(pixmap);
splash->show();... // 加载一些项
splash->showMessage("已加载模块");qApp->processEvents();... // 建立连接
splash->showMessage("正在建立连接");qApp->processEvents();

QSplashScreen支持使用showMessage()函数进行这样的操作。如果希望进行自定义绘制,可以使用pixmap()函数获取启动画面使用的位图的指针。或者,可以子类化QSplashScreen并重新实现drawContents()函数。

常用函数

  1. 构造函数:

    • QSplashScreen(const QPixmap &pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags()):使用给定的位图和窗口标志构造一个QSplashScreen对象。
  2. 显示和隐藏:

    • void show():显示启动画面。
    • void finish(QWidget *mainWindow):隐藏启动画面,并将其关联到指定的主窗口。在调用此函数之前,通常会在显示主窗口前执行一些初始化任务。
    • void clearMessage():清除启动画面上显示的消息。
  3. 位图相关:

    • void setPixmap(const QPixmap &pixmap):设置启动画面使用的位图。
    • const QPixmap *pixmap() const:返回启动画面使用的位图的指针。
  4. 消息显示:

    • void showMessage(const QString &message, int alignment = Qt::AlignBottom | Qt::AlignCenter, const QColor &color = Qt::black):在启动画面上显示消息。可以设置消息的对齐方式和颜色。
  5. 其他:

    • void raise():将启动画面置于顶层。
    • bool isFullScreen() const:判断启动画面是否为全屏模式。
    • void setEnabled(bool enabled):设置启动画面是否可用。
    • void setAutoFillBackground(bool enabled):设置是否自动填充启动画面的背景。

子类化示例

.h

#ifndef SCREEN_H
#define SCREEN_H#include <QWidget>
#include <QSplashScreen>namespace Ui {
class C_Screen;
}class C_Screen : public QSplashScreen
{Q_OBJECTpublic:explicit C_Screen(QWidget *parent = nullptr);~C_Screen();private:Ui::C_Screen *ui;
};#endif // SCREEN_H

.cpp

#include "Screen.h"
#include "ui_Screen.h"#include <QPixmap>
#include <QFont>C_Screen::C_Screen(QWidget *parent) :QSplashScreen(parent),ui(new Ui::C_Screen)
{ui->setupUi(this);QString strScreen = ":/images/screen1.png";QFont font = this->font();font.setPixelSize(23);setFont(font);QPixmap loadingPix(strScreen);setPixmap(loadingPix);}C_Screen::~C_Screen()
{delete ui;
}

在.main调用

    C_Screen screen;screen.show();screen.showMessage("程序正在加载......", Qt::AlignTop|Qt::AlignRight, Qt::red);QDateTime time = QDateTime::currentDateTime();QDateTime currentTime = QDateTime::currentDateTime();   //记录当前时间// 可以添加处理业务while (time.msecsTo(currentTime) <= 1000)                   //1000为需要延时的毫秒数{currentTime = QDateTime::currentDateTime();}for(int i = 0; i < 3; ++i){screen.showMessage(QString("请稍等%1......").arg(3-i), Qt::AlignTop|Qt::AlignRight, Qt::red);time = currentTime;while (time.msecsTo(currentTime) <= 1000)                   //1000为需要延时的毫秒数{currentTime = QDateTime::currentDateTime();}}

相关文章:

Qt 实现软件启动界面动画

实现软件启动界面&#xff0c;用到QSplashScreen类。 效果 启动界面 描述 QSplashScreen小部件提供了一个可以在应用程序启动期间显示的启动画面。 启动画面通常是在应用程序启动时显示的小部件。启动画面通常用于启动时间较长的应用程序&#xff08;例如需要花费一些时间来建…...

2000-2021年三批“智慧城市”试点名单匹配数据

2000-2021年三批“智慧城市”试点名单匹配数据 1、时间&#xff1a;2000-2021年 2、指标&#xff1a;行政区划代码、地区、所属省份、年份、智慧城市试点、最早试点年份 3、来源&#xff1a;住建部公布的三批“国家智慧城市名单” 4、说明&#xff1a;内含原始文件和匹配结…...

H5游戏分享-烟花效果

<!DOCTYPE html> <html dir"ltr" lang"zh-CN"> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width" /> <title>点击夜空欣赏烟花</title> <sc…...

底层驱动day8作业

代码&#xff1a; //驱动程序 #include<linux/init.h> #include<linux/module.h> #include<linux/of.h> #include<linux/of_gpio.h> #include<linux/gpio.h> #include<linux/timer.h>struct device_node *dnode; //unsigned int gpiono; …...

openWRT SFTP 实现远程文件安全传输

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f516;系列专栏&#xff1a; C语言、Linux、 Cpolar ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言 1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我…...

麒麟KYLINOS2303版本上使用KDE桌面共享软件

原文链接&#xff1a;麒麟KYLINOS2303版本上使用KDE桌面共享软件 hello&#xff0c;大家好啊&#xff0c;今天给大家推荐一个在麒麟KYLINOS桌面操作系统2303版本上使用KDE桌面共享软件的文章&#xff0c;通过安装KDE桌面共享软件&#xff0c;可以让远程vnc客户端连接访问本机桌…...

H5游戏源码分享-手机捉鬼游戏

H5游戏源码分享-手机捉鬼游戏 一款考验手速的游戏 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>手机捉鬼 微信HTML5在线朋友圈游戏</title><meta name&…...

vite中将css,js文件归类至文件夹

build: {chunkSizeWarningLimit: 1500,rollupOptions: {output: {// 最小化拆分包manualChunks(id) {if (id.includes(node_modules)) {return id.toString().split(node_modules/)[1].split(/)[0].toString()}},// 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]…...

【通信原理】第一章|绪论|信息度量和通信系统的性能指标

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 绪论 1. 信息和信息的度量 定义信息…...

基于STM32+OneNet设计的物联网智能鱼缸(2023升级版)

基于STM32+OneNet设计的智能鱼缸(升级版) 一、前言 随着物联网技术的快速发展,智能家居和智能养殖领域的应用越来越广泛。智能鱼缸作为智能家居和智能养殖的结合体,受到了越来越多消费者的关注。本项目设计一款基于STM32的物联网智能鱼缸,通过集成多种传感器和智能化控制模…...

NET-MongoDB的安装使用

一&#xff0e;下载 MongoDB 点击 Select package 选择自己所需版本后点击下载&#xff0c;本文选用Windows 6.0版本以上 二、配置MongoDB 在 Windows 上&#xff0c;MongoDB 将默认安装在 C:\Program Files\MongoDB 中。 将 C:\Program Files\MongoDB\Server\version_numbe…...

简化geojson策略

1、删除无用的属性&#xff0c;也就是字段&#xff0c;在shp的时候就给删了 用arcgis等等软件都可以做到 2、简化坐标的小数位数 &#xff08;1&#xff09;网上推荐的办法&#xff0c;俺不会Python… github.com/perrygeo/geojson-precision &#xff08;2&#xff09;曲线…...

一个Binder的前生今世 (二):Binder进程和线程的创建

文章目录 一个Binder的前生今世 (二):Binder进程和线程的创建binder在进程中的启动小结注释一个Binder的前生今世 (二):Binder进程和线程的创建 前篇文章一个Binder的前生今世 (一):Service的创建 讲了一个Service是如何创建以及如何与客户端建立联系的。讲解中涉及到…...

RocketMq源码分析(八)--消息消费流程

文章目录 一、消息消费实现二、消息消费过程1、消息拉取2、消息消费1&#xff09;提交消费请求2&#xff09;消费消息 一、消息消费实现 消息消费有2种实现&#xff0c;分别为&#xff1a;并发消费实现&#xff08;ConsumeMessageConcurrentlyService&#xff09;和顺序消费实现…...

sql--索引使用

最左前缀法则&#xff08;联合索引&#xff09; 联合索引 位置不影响&#xff0c;但是所有索引必须连续使用&#xff0c;才会走索引 中间跳过则会造成后面索引则会失效 索引失效 规避方法---尽量使用> 或 < Explain需要重点关注的字段 Type key_leng possibl…...

alibaba.fastjson的使用(三)-- Map、List ==》JSON字符串

目录 1.使用到的方法为: 2. Map转JSON字符串 3. List转JSON字符串 1.使用到的方法为: static String toJSONString(Object object) 2. Map转JSON字符串 /**...

pycharm 2023.2.3设置conda虚拟环境

分两步&#xff1a; &#xff08;1&#xff09;设置Virtualenv Environment &#xff08;2&#xff09;设值Conda Executable 加载conda环境&#xff0c;然后选择conda环境...

安卓Frida 脱壳

总结下现在脱壳的方法,比如寒冰大佬的Fart,买Nexus 手机,然后刷入肉丝老师的镜像就可以。是比较快速的方式。我今天推荐的方式是,使用Frida 来脱壳,基本上满足日常需求。也不用特别准备手机,脱壳镜像等。 Frida 环境电脑端安装比较简单,主要注意和手机版本相同即可。手机…...

【C】为什么7.0会被存储为6.99999

在《C Primer Plus》第 6 版 3.3.3 节 浮点数的介绍中&#xff0c;作者说浮点数通常只是实际值的近似值&#xff0c;例如&#xff0c;7.0可能被储存为浮点值6.99999。 如果采用32位的IEEE 754浮点表示形式来存储7.0&#xff0c;那么它的二进制表示将如下&#xff1a; 符号位&…...

Framework -- 系统架构

一、前言 framework的学习&#xff0c;需要掌握到什么程度&#xff1f; App 的启动流程&#xff1a;整体的过程&#xff0c;具体到某些类在整个流程中所起的作用&#xff1b;组件的设计模式&#xff0c;核心设计思想&#xff1b;需要知晓目前已知的问题&#xff0c;以及解决方…...

Unity性能优化终极利器:MeshFusion Pro

在现代游戏开发中&#xff0c;性能优化始终是一个核心问题。尤其是在大型场景或高复杂度模型的项目中&#xff0c;Draw Call 过多、顶点数量庞大以及实时生成对象都会严重拖慢游戏帧率&#xff0c;影响用户体验。为了应对这些挑战&#xff0c;Unity 开发者社区中出现了大量优化…...

一键部署文档分析服务:YOLO X Layout模型Docker实战教程

一键部署文档分析服务&#xff1a;YOLO X Layout模型Docker实战教程 1. 为什么需要文档版面分析&#xff1f; 在日常工作中&#xff0c;我们经常遇到这样的场景&#xff1a;收到一份扫描的合同PDF&#xff0c;需要提取关键条款&#xff1b;或者拿到一份企业年报&#xff0c;想…...

mbedBug:面向mbed OS的轻量级嵌入式调试纳米框架

1. mbedBug&#xff1a;面向mbed OS的轻量级嵌入式调试纳米框架1.1 设计定位与工程价值mbedBug并非通用型调试器或完整测试框架&#xff0c;而是一个专为资源受限嵌入式环境裁剪的调试纳米框架&#xff08;Debug Nanoframework&#xff09;。其核心设计哲学是“最小侵入、最大可…...

Simple Web Serial:Web与Arduino的轻量级事件驱动串口通信库

1. 项目概述Simple Web Serial 是一个面向嵌入式与 Web 跨域协同开发的轻量级双向通信桥梁库&#xff0c;其核心目标是消除 Web Serial API 的底层复杂性&#xff0c;让 Arduino 等基于 UART 的微控制器能以事件驱动&#xff08;event-driven&#xff09;范式与浏览器端 JavaSc…...

2026知识付费SaaS避坑指南:数据安全与系统稳定性实测,创客匠人为何值得托付?

在知识付费行业&#xff0c;大多数选型对比只关注“前台功能”&#xff1a;能不能卖课、能不能直播、有没有拼团。但真正决定生意生死的&#xff0c;往往是看不见的“底层能力”——数据是否安全&#xff1f;系统是否稳定&#xff1f;学员资产能否真正归你所有&#xff1f;过去…...

酶联免疫斑点技术原理与应用

一、技术背景与基本概念酶联免疫斑点技术Elispot是一种基于单细胞水平检测特异性抗体分泌细胞或细胞因子分泌细胞的免疫学检测方法。该技术结合了酶联免疫吸附测定&#xff08;ELISA&#xff09;的高灵敏度与斑点形成单元的可视化计数优势&#xff0c;能够在单个细胞层面实现功…...

Enhancing Large Language Model Reasoning with Knowledge Graph Paths: A Faithful and Interpretable Ap

1. 为什么大模型需要知识图谱的"导航系统"&#xff1f; 想象一下&#xff0c;你被突然扔进一个陌生城市&#xff0c;手上只有一本过期的旅游指南。这时候如果有个本地人拿着最新地图给你指路&#xff0c;是不是完全不一样&#xff1f;这就是当前大语言模型&#xff0…...

基于Xilinx Artix-7的JPEG2000图像无损压缩系统:完整工程与独立模块化设计

JPEG2000 图像无损压缩算法 FPGA第三方IP JPEG2K是基于xilinx Artix-7的FPGA完整工程&#xff0c;内有完整的MATLB算法工程和RTL源代码&#xff0c;还有详细的文档 JPEG2000压缩系统部分由6个独立模块组成&#xff1a;去马赛克模块、伽马校正模块、分量间变换模块、小波变换模…...

LeRobot数据采集全流程解析:从环境配置到动作回放(SO-100实战)

LeRobot数据采集全流程实战&#xff1a;从环境搭建到动作复现的SO-100深度指南 当我们需要让机器人学会新技能时&#xff0c;数据采集是构建智能系统的第一步。LeRobot作为Hugging Face推出的机器人学习平台&#xff0c;通过标准化流程降低了开发门槛。本文将带你完整走通SO-10…...

Naive UI 主题色定制实战:从组件覆盖到全局配置

1. 为什么需要定制Naive UI主题色&#xff1f; 当你使用Naive UI开发项目时&#xff0c;默认的绿色主题可能并不符合你的品牌风格。比如我们团队最近接手的一个金融类项目&#xff0c;客户要求整体UI采用深蓝色调&#xff0c;这时候就需要对Naive UI的主题色进行深度定制。主题…...