当前位置: 首页 > news >正文

qt QMovie详解

1、概述

QMovie 是 Qt 框架中用于处理动画文件的类。它支持多种动画格式,包括 GIF 和一些常见的视频格式(尽管对视频格式的支持依赖于底层平台)。QMovie 类主要用于在 QLabel 或 QGraphicsView 等控件中显示动画。通过加载动画文件,QMovie 可以控制动画的播放、暂停、停止以及获取当前帧图像等操作。

2、重要方法

  • QMovie(const QString &fileName, QObject parent = nullptr):构造函数,通过文件名加载动画。
  • bool isValid() const:检查动画文件是否有效。
  • void start():开始播放动画。
  • void stop():停止播放动画。
  • void setPaused(bool paused):暂停或恢复动画播放。
  • bool isPaused() const:检查动画是否处于暂停状态。
  • QImage currentFrame() const:获取当前帧的 QImage 对象。
  • int frameCount() const:获取动画的总帧数。
  • int nextFrameDelay() const:获取下一帧的延迟时间(毫秒)。
  • void setCacheMode(CacheMode mode):设置动画帧的缓存模式,以优化性能。
  • void jumpToFrame(int frameNumber):跳转到指定帧。
  • void setSpeed(int percent):设置动画播放的速度,单位为百分比(默认100%)
  • void setLoopCount(int count):设置动画的循环播放次数。

3、常用信号

以下是QMovie类中一些常用的信号及其简要介绍:

  • void started():当动画开始播放时发出信号,
  • void finished():当动画播放完成时发出信号
  • void frameChanged(int frameNumber):当动画帧发生变化时发出信号
  • void stateChanged(QMovie::MovieState state):当动画状态发生变化时发出信号。
  • void error(QImageReader::ImageReaderError error):当动画播放发生错误时发出信号。

4、缓存模式

QMovie::CacheMode 枚举定义了动画的缓存模式:

  • QMovie::CacheNone:不缓存帧,实时解码。
  • QMovie::CacheAll:缓存所有帧。

5、动画状态

QMovie::Moviestate枚举定义了动画的状态:

  • QMovie::NotRunning:动画未在运行。
  • QMovie::Paused:动画暂停。
  • QMovie::Running:动画正在运行。
#include <QApplication>
#include <QLabel>
#include <QMovie>
#include <QVBoxLayout>
#include <QWidget>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个主窗口QWidget window;window.setWindowTitle("QMovie Example");// 创建一个 QVBoxLayoutQVBoxLayout *layout = new QVBoxLayout;// 创建一个 QLabelQLabel *label = new QLabel;// 创建一个 QMovie 对象并加载 GIF 文件QMovie *movie = new QMovie(":/path/to/your/animation.gif");// 将 QMovie 对象设置给 QLabellabel->setMovie(movie);// 将 QLabel 添加到布局中layout->addWidget(label);// 将布局设置给窗口window.setLayout(layout);// 开始播放动画movie->start();// 显示窗口window.show();return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           

http://www.lryc.cn/news/479632.html

相关文章:

  • 数据集整理
  • 认证授权基础概念详解
  • 美国地址生成器站点
  • 微信4.0大版本升级跨平台支持界面全面改版
  • 不想贴秋膘?正确打开秋冬运动姿势
  • 【AIGC半月报】AIGC大模型启元:2024.11(上)
  • 纯前端生成PDF(jsPDF)并下载保存或上传到OSS
  • 海外媒体发稿:旅游业媒体推广12个方面的注意事项-华媒舍
  • 分割回文串(DFS)
  • Qt第三课 ----------容器类控件
  • 打印菱形(C语言)
  • Oracle 19c 中启用 scott 用户
  • git commit 校验
  • 【AtCoder】Beginner Contest 377-B.Avoid Rook Attack
  • 江协科技STM32学习- P38 软件SPI读写W25Q64
  • 【Triton 教程】低内存 Dropout
  • npx创建项目时,error fetch failed.TypeError: fetch failed
  • 《Kotlin实战》-附录
  • yelp数据集上识别潜在的热门商家
  • 【Linux】进程信号全攻略(一)
  • linux文件重命名
  • 如何选择适合的AWS EC2实例类型
  • 【Uniapp】Uniapp Android原生插件开发指北
  • 【随手笔记】FLASH-W25Q16(三)
  • 2024软件测试面试热点问题
  • 【JAVA】java 企业微信信息推送
  • 介绍一下数组(c基础)(smart 版)
  • Java项目实战II基于Spring Boot的个人云盘管理系统设计与实现(开发文档+数据库+源码)
  • 探索数据科学与大数据技术专业本科生的广阔就业前景
  • 微服务架构面试内容整理-Zuul