当前位置:   article > 正文

Qt在场景中播放GIF的两种方法_qt 播放gif 裁剪区域

qt 播放gif 裁剪区域


前言

本文主要展示Qt在场景中播放GIF的两种方法

QMovie结合
QLabel和QGraphicsPixmapItem分别实现GIF播放功能


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用步骤

1.使用QLabel来进行播放GIF

movie=new QMovie("路径");
label.setMovie(movie);
movie.start();
  • 1
  • 2
  • 3

也可以使用 movie->setScaledSize(size());来调整movie大小,最后将标签加入场景中就可以了。

2.使用QGraphicsPixmapItem来进行播放GIF

这个需要搭配场景来使用,下面代码中会给出场景的使用。
代码如下(示例):

需要包含的头文件

#include <QGraphicsScene>  
#include <QGraphicsView>  
#include <QMovie>
  • 1
  • 2
  • 3

//创建QGraphicsScene实例
QGraphicsScene *scene = new QGraphicsScene;

//创建QMovie实例并设置GIF文件:
QMovie *movie = new QMovie("路径");

//创建一个QGraphicsPixmapItem来显示GIF:
QGraphicsPixmapItem *item = new QGraphicsPixmapItem(QPixmap::fromImage(movie->currentFrame()));  
scene->addItem(item);

/*将QMovie与QGraphicsPixmapItem关联:
当GIF的帧发生变化时,QGraphicsPixmapItem会自动更新。*/

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

但是到这里还是无法实现在场景中播放的,这里还需要创建QGraphicsView实例并设置场景:

QGraphicsView *view = new QGraphicsView(scene);
movie->start();
  • 1
  • 2

连接信号和槽来处理播放完成或错误

connect(movie, &QMovie::finished, this, &YourClass::onMovieFinished);
//放完了怎么办
connect(movie, &QMovie::errorOccurred, this, &YourClass::onError);
//出现错误如何处理
  • 1
  • 2
  • 3
  • 4

注意事项

当我们不再需要这些资源时,确保适当地清理它们以避免内存泄漏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/297444
推荐阅读
相关标签
  

闽ICP备14008679号