软件启动动画效果
先来看效果。下面录制了加载图片和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帮助手册的一段说明文章来源:https://www.toymoban.com/news/detail-616435.html
启动画面出现在屏幕中央。添加Qt::WindowStaysOnTopHint到splash小部件的窗口标志可能是有用的,如果你想让它在桌面上的所有其他窗口之上。一些X11窗口管理器不支持“停留在顶部”标志。一个解决方案是设置一个计时器,定期调用启动屏幕上的raise()来模拟“停留在顶部”的效果。
最常见的用法是在主小部件显示在屏幕上之前显示一个闪屏。文章来源地址https://www.toymoban.com/news/detail-616435.html
到了这里,关于Qt设置软件启动动画(支持图片和视频俩种方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!