QTimer <-- 计时器
重复触发 :
QTimer *timer = new QTimer(this); //this 为parent类, 表示当前窗口
connect(timer, SIGNAL(timeout()), this, SLOT()); // SLOT填入一个槽函数
timer->start(1000); // 1000毫秒, 等于 1 秒
以上意义为每隔 1 秒触发一次槽函数
单次触发 :
QTimer::singleShot(1000, this, SLOT()); // SLOT槽填入一个槽函数
以上意义为一秒后触发,仅触发一次
QTimer中所常用函数
函数:
void setTimerType(Qt::TimerType atype); <-- 设置tiemr的时间精度类型
Qt::PreciseTimer <-- 精确计时器试图保持毫秒精度。
Qt::CoarseTimer <-- 粗计时器试图保持精度在预期间隔的5%以内。
Qt::VeryCoarseTimer <-- 非常粗糙的计时器只保持完全的第二精度。
void stop(); <-- 可以用来停止触发,可以再次调用Start再次开始触发
付:
QObject类中也有一个可进行计时的函数
int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
需要写一个继承了QObject的类,重写 void timerEvent(QTimerEvent *event); 函数
使用该定时器的方法,每个Timer都有对应的timerid,所以,需要启动定时器,再通过timerid来对定时器进行绑定或者操作。
启动计时器的方法: 调用int startTimer(int interval, Qt::TimerType timeType = Qt::CoarseTimer);
第一个形参需传入一个int类型的实参,代表多少毫秒,第二个是时间精度类型,上面有描述,返回值为timerid
例如:
startTimer(1000); <-- 1秒调用一次,启动了第一个计时器
startTimer(2000); <-- 2秒调用一次,启动了第二个计时器
timerEvent函数表示计时器调用时做的事情,每完成一次计时调用一次函数
void timerEvent(QTimerEvent *event){ // event 表示当前运行的定时器
if(event->timerid == 1){
qDebug() << "1号计时器运行一次";
}
qDebug() << "当前TimerID 为" << event->timerid;
}