我使用信号和插槽几次使用了一个计时器,我启动它并继续运行并每隔几秒钟调用一次事件。
QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(move()));
timer->start(50);
我想知道如何在一段时间内使用计时器,例如
如果我的程序中出现了某些问题 - >
//Start CountdownTimer(3 seconds)
setImage("3secondImage.jpg");
//when time allocated is up
resetOrginalImage("orig.jpg");
我不知道如何做到这一点任何帮助或正确方向的一点将非常感激。
答案 0 :(得分:3)
QTimer有singleShot()
。但是你需要创建一个没有参数的单独插槽:
private slots:
void resetImage() {resetOrginalImage("orig.jpg");}
...
setImage("3secondImage.jpg");
QTimer::singleShot(3000, this, SLOT(resetImage()));
答案 1 :(得分:0)
如果您正在使用C ++ 11,则使用带有QTimer的lambda表达式可以更容易阅读,特别是如果计时器只执行少量代码行: -
QTimer * timer = new QTimer();
timer->setSingleShot(true); // only once
connect(timer, &QTimer::timeout, [=]{
// do work here
resetOrginalImage("orig.jpg");
};
timer->start(3 * 1000); // start in 3 seconds
在我看来,它比在计时器超时时声明要调用的单独函数更优雅。