Qt 显示 GIF
Qt 中,静态图片 PNG,JPG 等可以用其创建 QPixmap,调用 QLabel::setPixmap() 来显示,但是能够具有动画的 GIF 却不能这么做,要在 QLabel 上显示 GIF,需要借助 QMovie 来实现。
QLabel 显示 GIF
使用 GIF 图片的路径创建 QMovie 对象,并且调用 QMovie::start() 启动 GIF 动画,然后通过 QLabel::setMovie() 设置好动画对象后,就能在 QLabel 上看到 GIF 动画了。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <QApplication>
#include <QMovie>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel();
QMovie *movie = new QMovie("/Users/Biao/Desktop/x.gif");
label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
movie->start(); // 2. 启动动画
label->show();
return app.exec();
}
|
控制 GIF 动画循环次数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <QApplication>
#include <QMovie>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel *label = new QLabel();
QMovie *movie = new QMovie("/Users/Biao/Desktop/x.gif");
label->setMovie(movie); // 1. 设置要显示的 GIF 动画图片
movie->start(); // 2. 启动动画
label->show();
QObject::connect(movie, &QMovie::frameChanged, [=](int frameNumber) {
// GIF 动画执行一次就结束
if (frameNumber == movie->frameCount() - 1) {
movie->stop();
}
});
return app.exec();
}
|
如果查看 QMovie API,会发现 QMovie::loopCount() 能够返回 GIF 动画的循环次数,但是这个次数是创建 GIF 时设置的次数,QMovie 没有提供 API 来设置动画循环的次数,不过我们可以监听动画执行时的 frameChanged 信号,如果当前帧是 GIF 的最后一帧时则说明一次动画播放完成,需要停止动画播放时调用 QMovie::stop() 即可。上面的例子中 GIF 动画执行完一次的时候就停止,如果需要执行完 3 次时才停止,应该怎么修改呢?
QMovie 中 GIF 动画帧的序号从 0 开始计数,例如共有 200 帧的 GIF 动画的最后一帧的下标是 199,QMovie::frameCount()返回 GIF 的帧数。
性能
QMovie 显示 GIF 的性能还是非常强劲的,在项目中显示一个 200 帧,50M 大小的 GIF,和显示普通的图片速度一样非常快,没有任何延迟的感觉,Mac 和 Windows 都测试过。
http://www.qtdebug.com/qt-gif/
Qt 显示 GIF的更多相关文章
- QT显示机制(7篇相关文章)
了解QT显示机制,最重要的就是要了解QT是如何管理窗体的显示区域的,这里有个重要的类:QRegion, 在QT中可以通过QRegion定义一个窗体的显示区域,也可以通过QRegion定义窗体的可修改区 ...
- Qt显示调用vs中的dll
网上看到很多文章写调用vc的dll,但我尝试了总是出问题,下面结合参考别人的文章,实现了Qt显示调用vs中c接口的dll. 具体直接上代码: vs中的代码: TMax.h: #ifdef TMAX # ...
- QT显示url图片
QT 显示网络图片我目前的办法就是先下载下来 然后显示 如果有好的办法请相互交流一下 需要调用的头文件 #include <QNetworkAccessManager> #include ...
- 15、USB摄像头图片采集+QT显示
一.Qt的下载和的安装 关于Qt的安装,网络上有很详细的介绍.这里只做简单介绍. 需要的安装包一共有两个:Qt Creator 和QTE. 1)QT Creator 下载地址:qt-sdk-linux ...
- 嵌入式qt显示中文和隐藏鼠标
最近项目快接近尾声了,要把项目移植到板子上,但是板子上的系统没有安装字库,导致中文无法显示,并且有一个很讨厌的鼠标光标(又没有鼠标),上网找了一些解决方案,记录一下 qt显示中文: 如果你急于在ARM ...
- QT显示中文的几个问题
最近用QT,需要在界面上显示中文,发现QT无法直接在代码中写中文,只能通过曲线救国的方式,比如用QT语言家,QTextCodec的fromloca8bit 研究了半天,终于明白了一些编码的问题 1.V ...
- Qt 显示图片 放大 缩小 移动(都是QT直接提供的功能)
本文章原创于www.yafeilinux.com 转载请注明出处. 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲.这里我们是利用QPixmap类来实现图片显示的. 一.利 ...
- Qt 显示透明flash和编写QtWebkit插件
Qt 有两种方法可以显示flash. 1. 通过QAxWidget 调用com形式显示flash, 需要本机安装IE flash插件 2. 直接通过qwebview显示flash, 需要下载webki ...
- QT显示GIF图片
在QT中要显示GIF图片,不能通过单单的添加部件来完成. 还需要手动的编写程序. 工具:QT Creator 新建一个工程,我们先在designer中,添加一个QLabel部件. 如下图: 将QLab ...
- 我写的一个 Qt 显示图片的控件
Qt 中没有专门显示图片的控件.通常我们会使用QLabel来显示图片.可是QLabel 显示图片的能力还是有点弱.比方不支持图像的缩放一类的功能.使用起来不是非常方便. 因此我就自己写了个简单的类. ...
随机推荐
- jquery插件课程2 放大镜、多文件上传和在线编辑器插件如何使用
jquery插件课程2 放大镜.多文件上传和在线编辑器插件如何使用 一.总结 一句话总结:插件使用真的还是比较简单的,引包,初始化,配置参数(json),配置数据(json),而后两步不是必须的.而且 ...
- ArcGIS Engine 编辑- IWorkspaceEdit
转自原文 ArcGIS Engine 编辑- IWorkspaceEdit 这个例子中,我创建了1000条要素,并结合缓冲将数据写到文件中,并且添加了时间统计,当然数据是我捏造的,还请原谅,这个花费的 ...
- [Angular] Scrolling the Message List To the Bottom Automatically Using OnChanges
Let's say the message list can Input (messages) from parent component, and what we want to do is whe ...
- 基于 Android NDK 的学习之旅-----JNI LOG 打印
程序都是调出来的. 下面我介绍下JNI层的log打印方法的使用,类似与Android sdk提供的log 1.Android 应用层 MainActivity.java 主要功能代码 a) ...
- [Angular] Create a simple *ngFor
In this post, we are going to create our own structure directive *ngFor. What it should looks like i ...
- [React] Keep Application State in Sync with Browser History
Using pushState and passing route data via context allows our application to respond to route change ...
- 【b404】虫食算
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单 ...
- VC和matlab混合开发学习
作者:朱金灿 来源:http://blog.csdn.net/clever101 第一种方式是直接调用Matlab Engine的接口.Matlab Engine 采用Client/Server的方式 ...
- quick cocos2dx lua 网络图片 下载 自己主动更新
转载请注明,原文地址:http://blog.csdn.net/dd135373/article/details/46468505 quick coocs2d-x 网络图片下载,自己主动更新纹理,保存 ...
- 常见Python 中pip用法(待继续添加)
常见pip用法 * pip install numpy --安装包numpy * pip uninstall numpy --卸载包numpy * pip ...