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

这篇具有很好参考价值的文章主要介绍了Qt设置软件启动动画(支持图片和视频俩种方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


软件启动动画效果

先来看效果。下面录制了加载图片和gif动图的俩种效果。

静态背景

qt 启动画面,Qt,qt,开发语言,C++,启动动画,动画

动态背景

这里我加载了一个gif的动图,你也可以使用一段录制好的视频。
qt 启动画面,Qt,qt,开发语言,C++,启动动画,动画

程序启动动画

许多应用程序都会在启动的时候显示一个程序启动画面(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()来模拟“停留在顶部”的效果。
最常见的用法是在主小部件显示在屏幕上之前显示一个闪屏。文章来源地址https://www.toymoban.com/news/detail-616435.html

到了这里,关于Qt设置软件启动动画(支持图片和视频俩种方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt图片定时滚动播放器+透明过渡动画

    Qt图片浏览器 QT制作一个图片播放器 Qt中自适应的label+pixmap充满窗口后,无法缩小只能放大 Qt的动画类修改透明度来实现上下两张图片的切换效果 解决:[QWidget::paintEngine: Should no longer be called QPainter::begin: Paint device returned engine == 0, type: 1] 可以显示jpg、jpeg、png、bmp。可以从电脑

    2024年02月15日
    浏览(43)
  • 全网最全!!Qt实现图片旋转及图片旋转动画的几种方式

    第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: 第二种方案 使用 QPainter 这位“画家”,示例程序如下:  一、借助QPixmap实现旋转动画 第二种方案 使用 QPainter 这位“画家”,示例程序如下:

    2024年02月11日
    浏览(48)
  • Android 13.0 开机动画支持mp4格式视频作为开机动画播放

     在13.0的系统产品开发中,在系统开机动画这块一般情况下都是播放开机图片,然后绘制多张开机图片形成开机动画模式,而产品需求要求支持开机mp4格式的短视频来作为开机动画播放视频来介绍产品情况,就需要用开机视频来替代开机动画来实现功能 Android 开机画面 由三个

    2024年02月08日
    浏览(65)
  • 图片或视频充当网页背景+过渡动画

    这是目前的主页预览图。上一个版本带有学校logo,根据比赛规则,删掉了学校logo。 也就是将图片作为背景。 这个需求产生的场景是:如果直接用img标签显示界面左上角的logo,那么鼠标右键是可以直接选中图片的,也可以通过拖动的方式选中,跟文字一样。 而对于大多数现

    2024年04月14日
    浏览(57)
  • uniapp微信小程序设置开屏启动动画效果

    效果预览  使用uniapp搭建的微信小程序,制作小程序启动开屏动画,主要使用css动画属性。主页代码过多这里就展示重要代码片段。 js代码 css代码

    2024年02月03日
    浏览(50)
  • Qt+C++实现灯带动画运动位置变换移动跑马灯图片轮播

     程序示例精选 Qt+C++实现灯带动画运动位置变换移动跑马灯图片轮播 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++实现灯带动画运动位置变换移动跑马灯图片轮播编写代码,代码整洁,规则,易读。 学习与应用推荐首

    2024年02月13日
    浏览(35)
  • Multi Frame 视频和图片帧互换以及AI动画帧生成

    Stable Diffusion 只做AI动画是基于把原有视频按照帧进行提取之后对每一帧的图像进行标准化流程操作,中间可以掺杂Controlnet对人物进行控制,使用对画面进行控制,但是很多小伙伴不太会掌握一些编辑视频软件或者python的操作导致视频转帧,帧转视频会出现一些问题。

    2024年02月11日
    浏览(41)
  • Stable Diffusion 视频和图片帧互换以及AI动画帧生成

    Stable Diffusion 只做AI动画是基于把原有视频按照帧进行提取之后对每一帧的图像进行标准化流程操作,中间可以掺杂Controlnet对人物进行控制,使用对画面进行控制,但是很多小伙伴不太会掌握一些编辑视频软件或者python的操作导致视频转帧,帧转视频会出现一些问题。

    2023年04月09日
    浏览(73)
  • Matlab/Python教程系列 | 根据目录下的已有图片制作视频(动画)

    注1:本文系“MATLAB/Python编程教程”系列之一,致力于使用Python和Matlab实现特定的功能。本次要实现的功能是:根据目录下的已有图片制作视频(动画)。 在这个教程中,我们将一起学习如何使用MATLAB和Python编程语言,根据目录下的已有图片制作视频(动画)。我们将从头开始,逐

    2024年02月09日
    浏览(45)
  • Qt+C++多线程thread-QThread-QTimer视频-控件动画-混合应用实例

    程序示例精选 Qt+C++多线程thread-QThread-QTimer混合应用实例 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++多线程thread-QThread-QTimer混合应用实例编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 功能:多线程thr

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包