读书人

QTimer怎么以不同的时间间隔循环触发事

发布时间: 2013-04-20 19:43:01 作者: rapoo

QTimer如何以不同的时间间隔循环触发事件
有一个功能要求,每个一个时间间隔interval就在窗口显示一张图片。显示图片的函数已经写好了(doChangeImage()),当我设定interval为固定值时,用timer触发该函数,即可以正常的速度播放图像。现在我想根据cMI值的范围来指定不同的时间间隔interval,来实现改变图片播放速率的功能,下面是我的程序,我调试的时候,图片一次性的播放完成,根本无变速播放的情况出现,请问是哪里出问题了,谢谢?

for (int j = 0;j<micount; j++){

QString currentMI=list_MIresult[j];
float cMI=currentMI.toFloat();
if (cMI>=0.95)
{
if (interval<=20)
{
interval=20;
}
else
interval/=10;
}
else{
interval=500;
}

//timer是全局定时器,dochangeImage()实现每次在屏幕上刷新一张图片;
connect(timer, SIGNAL(timeout()), this, SLOT(doChangeImage()));

timer->start(interval,true);
}
[解决办法]
我理解这样写,timer的属性在start后是不会再改变的,timer不会动态改变自己的interval只是开始时调用一下。在doChangeImage内重新start可能会有用,但这个动态改变interval的这个for循环这样写的话不能和timer线程同步吧,这个变形一下,主体部分也写在doChangeImage中。我也是初学,说的对不对你参考一下吧
[解决办法]

引用:
我理解这样写,timer的属性在start后是不会再改变的,timer不会动态改变自己的interval只是开始时调用一下。在doChangeImage内重新start可能会有用,但这个动态改变interval的这个for循环这样写的话不能和timer线程同步吧,这个变形一下,主体部分也写在doChangeImage中。我也是初学,说的对不对你参考一下吧
……

可能是这个原因。
先把qtimer停下,setinterval,再start。

读书人网 >QT开发

热点推荐