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

news/2024/10/23 9:36:19/

目录

  • 软件启动动画效果
    • 静态背景
    • 动态背景
  • 程序启动动画
  • 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.ppmy.cn/news/555532.html

相关文章

也谈QQ美女找茬外挂的编写

不久前发表在首页的QQ美女找茬&#xff08;外挂&#xff09;学习笔记一文让我深受启发&#xff0c;我看了该文章后&#xff0c;也自己动手实现了一个外挂&#xff0c;效果挺不错的。请看截图&#xff1a;从图中可以看出&#xff0c;我没有让结果显示在原游戏窗口中&#xff0c;…

制作联众找茬外挂

制作外挂,首先要做一个鼠标的钩子,这个大家应该都知道.以下简单描述一下 SetWindowsHookEx 装载钩子 UnHookWindowsHookEx 卸载钩子 示例 hHk : SetWindowsHookEx(WH_MOUSE,MouseHookProc,Hinstance,0); 写一个处理函数function MouseHookProc,将需要的鼠标信息通过SendMe…

QQ找茬辅助器

直接正题。 软件需求&#xff1a;给定2张相似图&#xff0c;找出不同处。 A、从游戏窗口获取需要分析的图片 B、对比2图片&#xff0c;辨别出不同处&#xff08;用红色表示&#xff09; C、点击不同处&#xff0c;并给游戏窗口发送点击事件 下图是游戏截图。可见效果还是可以…

用Python实现QQ找茬游戏外挂工具

源地址&#xff1a;http://cpiz.net/blog/2012/03/a_qq_zhaocha_assistant_by_python/ (原创作品&#xff0c;转载请注明出处)好久没写技术相关的博文&#xff0c;这次写篇有意思的&#xff0c;关于一个有意思的游戏——QQ找茬&#xff0c;关于一种有意思的语音——Python&…

C#写的QQ找茬外挂

这个暑假转眼就要过完了。本来打算在学校干两件事&#xff1a;学车和竞赛&#xff0c;结果竞赛没能杀进全国总决赛&#xff0c;想想也是意料中的事。学车就更郁闷了&#xff0c;从上学期开学报名到科目一考试&#xff0c;足足等了近五个月。终于摸到真车了&#xff0c;结果每天…

对QQGame-大家来找茬的辅助工具的改进

【前言】最近在博客园首页上看到有“大家来找茬”这个游戏&#xff08;此游戏为找出两个相近图片的不同点&#xff09;外挂的相关帖子&#xff0c;所以这里我也翻看了我之前&#xff08;2009年5月&#xff09;的写的一个简单的辅助程序&#xff08;采用 VC6 开发的&#xff09;…

动手制作QQ找茬游戏外挂

周末闲来无事&#xff0c;玩了腾讯的qq游戏&#xff0c;名字叫大家来找茬&#xff0c;游戏就是在两幅相同的图片寻找不同五处不同的地方&#xff0c;你和对手谁发现的快就赢&#xff0c;无奈自己眼睛不够尖&#xff0c;总是比对手慢&#xff0c;好在俺是名程序员&#xff0c;只…

【QT】找茬外挂制作

找茬外挂制作 找茬游戏大家肯定都很熟悉吧&#xff0c;两张类似的图片&#xff0c;找里面的不同。在下眼神不大好&#xff0c;经常瞪图片半天也找不到区别。于是乎决定做个辅助工具来解放一下自己的双眼。 一、使用工具 Qt&#xff1a;主要是用来做界面的 OpenCV: 用于图像处…