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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Centos搭建JAVA开发环境

    Centos搭建JAVA开发环境

  • 如何实现 MySQL 删除重复记录并且只保留一条

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:千g blog.csdn.net/n950814abc/article/details/82284838 最近…

  • git学习—git log 和git diff

    大概整理一下,供自查看 gitdiff和 git log 对比两个分支差异

  • ip协议——ip报文格式[通俗易懂]

    ip协议——ip报文格式[通俗易懂]版本:占4位,指IP协议的版本号。目前的主要版本为IPV4,即第4版本号,也有一些教育网和科研机构在使用IPV6。在进行通信时,通信双方的IP协议版本号必须一致,否则无法直接通信。 首部长度

  • vue 解决跨域问题(开发环境)[通俗易懂]

    vue 解决跨域问题(开发环境)[通俗易懂]一、什么是跨域问题同源:域名,协议,端口均相同不同源就是跨域,比如你的前端为localhost:9528,后端为localhost:8080,此时前端去访问后端接口就会产生跨域问题,因为端口不同。这里不详细讲,可参考百度百科-同源策略。二、如何解决跨域问题前后端都可以解决,这里仅提供vue的前端跨域解决方案:前端vue.config.js配置如下,然后保证在你访问后端接口时加个前缀/api。devServer:{port:port,open:false,ov

  • Q1营收利润大增,Take-Two如何掘金“次世代”?[通俗易懂]

    Q1营收利润大增,Take-Two如何掘金“次世代”?[通俗易懂]8月3日美股盘后,拥有GTA和2K等知名系列游戏的Take-Two(NASDAQ:TTWO)发布了截至2020年6月30日的2020财年第一季度的业绩报告。财报公布后次日,股价跳空高开,最终股价收于177.52美元,涨幅达5.87%。回顾近期走势,TTWO已连续创下历史新高,可见其一直深受投资者青睐。(图源:雪球)以下为近期核心数据表现:由于全球疫情居家,TTWO受益颇多。本季度无论是营收、净利润,还是各产品的销量均超过市场预期。此次财报有着许多亮点值得深入讨论,而除此之外,也希望随着新品推

发表回复

您的电子邮箱地址不会被公开。

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