Qt设置软件启动动画(支持图片和视频俩种方式)
软件启动动画效果
先来看效果。下面录制了加载图片和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()来模拟“停留在顶部”的效果。
最常见的用法是在主小部件显示在屏幕上之前显示一个闪屏。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbjkke
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01