QT:利用计时器连续播放图片组成动图效果 |
您所在的位置:网站首页 › 播放器连续播放符号 › QT:利用计时器连续播放图片组成动图效果 |
一、效果展示
(该动图完全由jpg图片连续播放构成)
因为这里导入的图片数量比较多,我们用到了一种方法,能够快速的将图片绑定至pixmap数组中,而免去了将所有图片路径都敲一遍的困扰。具体方法详见步骤6。 此处需要注意的是,由于这种方法,请确保你的图片名完全是由英文、下划线、数字组成。名字不符合的可以利用Windows批处理指令快速修改。方法大家可以在网上查一下,这里不过多叙述。 3. 主函数部分startTimer() 方法指定了计时器事件所需要的时间间隔值。也就是说,在本案例中,每经过100毫秒,计时器事件就会被调用一次。 Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); resize(524,475);//指定窗口大小,此处选择和图片相一致 curIndex=0;//初始化索引 startTimer(100); initPixmap(); } 4. 绘画事件这里的drawPixmap方法,是QPixmap中的一种方法,可以从硬件层面1绘制QPixmap所绑定的图片; 通过QRect类型指定图片的尺寸,当做参数传入drawPixmap方法中对所绘制图片的大小予以设定。 void Dialog::paintEvent(QPaintEvent *event) { QPainter painter(this); QRect q(0,0,524,475);//根据图片大小进行调整 painter.drawPixmap(q,pixmap[curIndex],q); } 5. 计时器事件通过计时器事件来更新curIndex索引,使得每经历一次指定的时间间隔,索引就会更新一次,并且将图片通过repaint() 方法进行重绘。如果想实现循环播放的效果,只需要在循环到最后时重置索引值为0即可。 void Dialog::timerEvent(QTimerEvent *event) { curIndex++; if (curIndex>=99) curIndex=0; repaint(); } 6.将图片绑定至pixmap数组中 值得注意的是,在头文件中声明Qpixmap数组时,该数组的大小应当是你所用到图片的数量。具体讲一下快速绑定大批量图片的步骤: ①: 利用QString类型来保存图片路径,将图片名调整至仅一个数字不同,并且该数字可作为图片播放顺序的依据。 ②: 将图片路径不同的部分用参数 %1 代替,利用QString的arg方法,将该参数按照指定的形式填充,本案例的arg方法有四个参数,分别是起始填充数字、参数的最大位数、进制、默认填充参数。 ③: 以循环的形式更新参数,同时创建和写入新的QPixmap,并存储进QPixmap数组中。 void Dialog::initPixmap() { for(int i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |