我想在qt4下使用定时器连续播放bmp图像,可是只播放了第一幅后就不动了,貌似timerEvent只被调用了一次,这是为什么啊?
具体问题描述:将按钮openimage的clicked信号和槽openimage()关联,在openimage()里调用myTimerId = startTimer(40)启动定时器,在类Mywindow里重载void timerEvent(QTimerEvent *event),timerEvent用来连续播放图像,关键步骤及代码如下:
首先打开图像文件temp.dat(temp.dat为多幅256*256的图像塑像数据文件):
QFile file1("temp.dat",this);
然后定位、读取、显示:
file1.open(QIODevice::ReadWrite);
file1.seek(65536*framenum);//显示一帧,framenum为当前显示的帧号
//读图像数据 256*256,bmp的文件头已经读到buf的前1078个字节里了
qint64 lineLength=file1.read( (char *)(buf+1078), (qint64)65536 );
QImage image;
image.loadFromData ( buf,66614,"BMP" );
QPixmap pm;
pm.convertFromImage(image,0);
imagelabel->setPixmap(pm);
repaint();
framenum++;//显示下一帧
源码(是从qt3移植到qt4上的)及数据见附件。
[ 此帖被xiaoyan124在2009-06-10 23:15重新编辑 ]