Qt学习C++

Qt延时程序方法

2017-07-30  本文已影响137人  Rekols

QTimer类中的singleShot

使用QTimer类中的这个静态函数在一定的时间间隔后调用一个槽函数,使用此函数非常方便,不需要timerEvent或创建一个QTimer对象。

函数原形

void QTimer::singleShot(int msec, QObject * receiver, const char * member)

msec:时间间隔
receiver:接收对象的地址
member:槽

例子

#include <QApplication>
#include <QTimer>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTimer::singleShot(600000, &app, SLOT(quit()));
    
    return app.exec();
}

这个程序会在10分钟(600,000毫秒)后自动终止。

定义QTimer对象的方法

首先需要定义一个对象:

QTimer *timer = new QTimer(父对象);

连接到槽:

connect(timer, SIGNAL(timeout()), this, SLOT(xxxx()));

使用start:

timer->start(2000); //两秒后触发定时器

当timer指定的父对象被销毁后,它也会自动销毁。

总结:第二种很麻烦,推荐第一种,不用定义QTimer对象,拿起QTimer::singleShot上来就是干!

Tips: 但是有个缺点,如果你在QMainWindow类中使用的话会对窗口的线程进行堵塞。

上一篇 下一篇

猜你喜欢

热点阅读