首页 > 编程语言 >Qt 程序启动画面QSplashScreen

Qt 程序启动画面QSplashScreen

时间:2024-05-21 16:32:21浏览次数:21  
标签:Qt 启动 gif 画面 splash Splash QSplashScreen

  QSplashScreen是Qt框架提供的一个类,用于在应用程序启动时显示一个带有文本和图像的启动画面(Splash Screen)。

  使用QSplashScreen类,你可以在应用程序启动时显示一个自定义的启动画面,以提供更好的用户体验。这个类提供了一些方法和属性,可以让你设置启动画面的文本、图像和其他样式。

  启动画面有两种,一种是静态启动画面,即运行程序显示一个界面(一张图片),显示结束后关闭程序界面。另一种是动态画面,即运行程序显示一个动态画面,通常是一段视频、或一个gif格式图片,播放结束后运行程序。

  QSplashScreen类构造函数默认传入QPixMap类型的参数,因此,静态启动和动态启动所需要的画面都需要借助QPixMap类。下图是QSplashScreen类的构造函数详情:

1.静态启动画面
  首先用QPixMap加载图像,然后传入QPixMap作为参数创建一个QSplashScreen类,调用show()显示。在show()之后调用QApplication::processEvents()。关于processEvents事件循环,文档解释是:预先调用处于队列状态的事件,直到全部处理完毕。通俗来说就是,在启动画面没显示完成之前,不要执行后面的界面ui绘制。最后,在主程序显示之后,调用dinish()结束启动画面。

 1 #include "toolbox.h"
 2 #include <QApplication>
 3  
 4 int main(int argc, char *argv[])
 5 {
 6     QApplication a(argc, argv);
 7 //===静态程序启动画面===
 8     QPixmap pix(":/resource/splash1.png");
 9     QSplashScreen splash(pix);
10     splash.show();
11     a.processEvents();
12  
13     toolbox w;
14     w.show();
15  
16     splash.finish(&w);//程序启动画面结束
17  
18     return a.exec();
19 }

2.动态启动画面
  由于QSplashScreen默认使用QPixmap类型的数据作为参数,所以直接调用gif文件或视频文件是无效的。这里需要使用QMovie实现动态画面的播放。
首先还是要定义QPixmap和QSplashScreen,然后通过一个事件循环,让gif以指定速度刷新,然后将刷新的帧画面以pixmap的方式显示。这里要注意的就是gif的播放速度要与事件循环速度匹配。

 1 #include "toolbox.h"
 2 #include <QApplication>
 3  
 4 int main(int argc, char *argv[])
 5 {
 6     QApplication a(argc, argv);
 7  
 8 //===动态程序启动画面===
 9     QPixmap pix(":/resource/splash2.gif");//这行代码加载了一个本地的GIF图片资源,它被用作Splash的背景
10     QSplashScreen splash(pix);//使用QPixMap创建了一个QSplashScreen对象,这个对象通常用于显示一个临时的Splash窗口,通常在程序启动或进行某些耗时操作时显示
11     QLabel splashlabel(&splash);//创建一个QLabel对象,他的父窗口是之前创建的QSplashScreen对象,这个标签将显示在Splash窗口上
12     QMovie splashgif(":/resource/splash2.gif");//加载本地GIF动画资源
13     splashlabel.setMovie(&splashgif);//将QLabel的movie设置为刚刚加载的GIF动画
14     splashgif.start();//开始播放GIF
15     splash.show();//显示Splash
16     splash.setCursor(Qt::BlankCursor);//设置Splash窗口的鼠标光标样式为空白,也就是不显示鼠标外观
17     for(int i=0;i<15000;i+=splashgif.speed()){//循环,使得程序等待Splash动画播放完毕
18         QCoreApplication::processEvents();//循环每一次都调用QCoreApplication::processEvents()来处理Qt的事件队列
19         Sleep(splashgif.speed()/5);//然后暂停一段时间
20     }                                             //循环持续到动画播放结束
21  
22     toolbox w;
23     w.show();
24  
25     splash.finish(&w);//程序启动画面结束
26  
27     return a.exec();
28 }

 

标签:Qt,启动,gif,画面,splash,Splash,QSplashScreen
From: https://www.cnblogs.com/ybqjymy/p/18204335

相关文章

  • qt中添加多个UI界面,并在其他文件中调用该UI界面
    一、概述qt创建一个新项目时,会创建一个属于mainwindow'的主ui界面,这时如果想要创建多个窗口,可以有三种方法。第一种:使用代码创建一个新窗口,优点是灵活,缺点是麻烦,其中控件和布局都需要代码来创建。第二种:在ui设计界面使用tabwidget控件来达到多个窗口的效果,不过这种方法只能......
  • qt拖动窗口
    voida::mousePressEvent(QMouseEvent*event){if(event->button()==Qt::LeftButton&&event->pos().y()<(this->height()-mainWidget->height())){m_dragging=true;m_dragStarPos=event->pos();}}voida::......
  • QT使用串口通信点击主界面通信阻塞
    1.问题导入在使用QT进行串口上位机开发时遇到鼠标点击主界面导致串口接收数据阻塞,无法继续在QT控件中更新接收到的数据。2.解决办法使用多线程:将串口通信放入子线程中。`QSerialPort*UARTDevide;//串口UART*newUART;//串口类QThreadUARTThred;//串口线程newUART->mo......
  • CLON + QT + CMAKE debug 不打印 (控制台不输出)
    原因:CMAKE设置了WIN32_EXECUTABLETRUE这表示了要生成一个GUI程序,而且WindowsGUI会禁用控制台输出将set_target_properties(aaPROPERTIESWIN32_EXECUTABLETRUE)修改为set_target_properties(aaPROPERTIESWIN32_EXECUTABLEFALSE)或者手动创建控制台:`//未......
  • QT基础语法与控件
    1.基础使用纯正的开源版本QT使用C++来实现QT使用QT可以使C++项目可视化本身也是C++的一个库允许跨平台QT特征面向对象,模块化设计调用,所有QT控件可继承控件之间的通信,signalslot友好的联机帮助,函数参数手册自定义控件设计QTCreator编译器集成开发环境IDE直接下载QT......
  • MQTT详解以及实际操作
    目录1MQTT1.1MQTT介绍1.1.1简介1.1.2特点和应用1.1.3为什么要用MQTT协议1.2MQTT控制报文的结构1.2.1固定报文头(FixedHeader)1.2.2可变报文头(VariableHeader)1.2.3有效负荷和消息类型1.2.4消息质量(QoS)1.4搭建MQTT服务1.5SpringBoot搭建提供端1.5.1pom.xml1.5.2修改......
  • Pyqt6&PySide6 事件与事件的处理函数
    什么是事件?事件是程序收到外界的输入,处于某种状态时自动发送的信号。事件有固定的类型,每种类型有自己的处理函数,用户只要重写这些函数,即可达到特定的目的。通过事件可以用一个控件监测另外一个控件,并可过滤被监测控件发出的事件。事件的类型与处理函数事件的概念与实列外界对P......
  • PyQt5 GUI编程(组件使用)
    一.简介PyQt5是一个用于创建图形用户界面(GUI)应用程序的Python绑定,它基于Qt库。PyQt5提供了大量的组件(也称为控件或部件),用于构建复杂的用户界面。以下是一些常用的PyQt5组件二.组件用法1.数字组件(QLCDNumber)classFileChooserApp(QWidget):def__init__(self):......
  • Qt学习第二篇(基本小组件的使用)
    Qt_2小部件是GUI的基本元素。它也称为UI控件。它接受来自底层平台的不同用户事件,如鼠标和键盘事件(以及其他事件)。我们使用不同的小部件创建UI。曾经有一段时间,所有的GUI控件都是从头开始编写的。Qt小部件通过开发具有现成的GUI控件的桌面GUI来缩短时间,并且Qt......
  • 一款基于C#开发的通讯调试工具(支持Modbus RTU、MQTT调试)
    前言今天大姚给大家分享一款基于C#、WPF、Prism、MaterialDesign、HandyControl开发的通讯调试工具(支持ModbusRTU、MQTT调试,界面色彩丰富):Wu.CommTool。工具特点工具界面色彩丰富。支持ModbusRTU、MQTT服务器、MQTT客户端。ModbusRTU自动解析数据帧。智能防粘包,速度快也......