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类中使用的话会对窗口的线程进行堵塞。
网友评论