Qt动画播放之QMovie类[通俗易懂]

Qt动画播放之QMovie类[通俗易懂]主要是用到QMovie类实现在事件触发时开启动画播放效果(需要注意的是,这个动画播放默认是循环播放的,如果不做特殊处理动画会一直播放)QMovie*movie=newQMovie(“aaa.gif”);ui->movieLabel->setMovie(movie);movie->start(); //启动gif图片//movie->stop(); /…

大家好,又见面了,我是你们的朋友全栈君。

主要是用到QMovie类

实现在事件触发时开启动画播放效果(需要注意的是,这个动画播放默认是循环播放的,如果不做特殊处理动画会一直播放)

QMovie *movie = new QMovie("aaa.gif");
ui->movieLabel->setMovie(movie);
movie->start();			//启动gif图片
//movie->stop(); //停止gif图片的播放

QMovie类简介:

1、指定播放的文件

  • 利用构造函数在初始化的时候,指定要播放的文件;
    QMovie *movie = new QMovie(":/a.gif");
    movie->start();
    
  • 利用setFileName(QString)来指定播放的gif文件
    movie->setFileName(":/a.gif");
    movie->start();
    

2、QMovie的一些常见属性设置

  • gif文件的帧数 int frameCount();

    主要是获取gif文件的总帧数;可以作为停止判断条件

  • gif文件播放过程中的当前帧数: int currentFrameNumber() const ;

    可以调用这个接口来获取,也可以管理movie的信号frameChanged(int)来获取;

  • 获取gif文件当前的播放速度: int speed() const;

  • 设置gif文件当前的播放速度: void setSpeed(int percentSpeed); 要注意的是参数是一个百分整数,即最后的播放速度 = 参数值 * 0.01;如果要设置为2倍播放速度,那么参数应该是 200;

  • 获取当前播放的动画的文件路径 QString fileName() const;

  • 获取当前播放的动画的循环次数 int loopCount() const; 如果动画的播放属性是一直循环播放,则返回的循环次数就是一个 -1 值;

3、movie中的一些常见信号

  • 启动信号: void start(); ;在movie对象开始播放时触发

  • 结束信号: void finished(); 在动画播放结束后触发

  • 当前帧数信号: void frameChanged (int frameNumber); 参数为当前帧数,可以根据这个值在槽函数中设置只播放一次:槽函数代码如下:

    if(frameNumber== movie->frameCount() -1 )
    { 
         
       movie->stop();
    }
    
  • 当前播放状态变化时发出的信号: void stateChanged(QMovie::MovieState state); 这个状态主要有三种:停止状态(**QMovie::NotRunning **) ,暂停状态(QMovie::Paused ),正在播放状态(**QMovie::Running **) ;三者的枚举值分别是 0,1,2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147788.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Win7如何分享局域网并设置共享文件夹账户和密码

    Win7如何分享局域网并设置共享文件夹账户和密码

    2021年10月9日
  • 电阻参数_关于电阻的相关参数

    实际应用时,通常采用平均电阻温度系数,定义式:TCR(平均)=(R2-R1)/R1(T2-T1)有负温度系数、正温度系数及在某一特定温度下电阻只会发生突变的临界温度系数。紫铜的电阻温度系数为1/234.5℃。不同类型电阻温度稳定性从优到次,依次为:金属箔、线绕、金属膜、金属氧化膜、碳膜、有机实芯。1。镀金并不是为了减小电阻,而是因为金的化学性质非常稳定,不容易氧化,接头上镀金是为了防止接触不良(不…

    2022年4月8日
  • (详解)IDEA中使用git教程

    (详解)IDEA中使用git教程前言最近学习了一下VCS(VersionControlSystem),这里我选择的是Git而不是SVN,因为Git在本地磁盘上就保留着所有当前项目的历史更新,所以处理起来速度飞快,这是使用空间换时间的处理方式。使用Git,即使在没有网络或VPN的情况下,你同样可以非常愉快的频繁提交更新到本地仓库,等到有了网络的时候再提交到远程的仓库(百度百科)。1.IDEA安装GitIDEA虽然集成…

    2022年6月28日
  • oracle查找数据库中所有表_oracle查看某个表的索引

    oracle查找数据库中所有表_oracle查看某个表的索引ORACLE查询数据中所存在的表,搜索指定的表

    2022年4月22日
  • 【Away3D】初步认识[通俗易懂]

    【Away3D】初步认识[通俗易懂]1packagezen.funny2{3importcom.greensock.TweenLite;45importflash.display.Sprite;6import

    2022年7月2日
  • java web开发(二) 接口开发

    java web开发(二) 接口开发javaweb开发(一)环境搭建讲解了如何搭建一个JavaWeb项目,如果你还没了解,建议先浏览下!今天这篇文章主要讲解的就是接口开发,打算使用比较古老的或者说比较原始方法实现的接口。一.数据库设计。假设要做一个简单的学生信息管理系统,数据库名为students_manage,并且先设计一张学生表,表名为student。1.打开Sqlyong工具,如果还没创建连接…

    2022年5月28日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号