Qt——定时器QTimer
创始人
2024-05-02 08:05:11
0

目录

一.定时事件timerEvent

二.QTimer对象


QTimer是qt中的单次和重复定时器。

其主要有两种定时方式,一种是定时事件,一种是通过信号与槽。

一.定时事件timerEvent

在需要定时器的类中使用startTimer(x)进行定时设置和启动。

int id = startTimer(x);

其中,x是定时事件,单位是毫秒ms,startTimer会自动启动该定时器。

返回值是该定时器独一无二的id。

同时需要使用定时事件timerEvent完成具体的定时任务。

void timerEvent(QTimerEvent* ev){if(ev->timerId() == id){//判断是否是定时器id//该定时器具体的定时事件}if(ev->timerId() == id2){//判断是否是定时器id2//该定时器2具体的定时事件}...
}

 比如我们希望每隔1秒打印一次hello:

Widget::Widget(QWidget *parent)//构造函数: QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);id1 = startTimer(1000);//id1已经设置为成员变量
}void Widget::timerEvent(QTimerEvent* ev){//定时事件if(ev->timerId() == id1){qDebug() << "hello";}
}

 

二.QTimer对象

大多数情况下我们通过使用信号与槽connect的形式完成定时任务。

首先创建一个QTimer类对象,调用start函数完成定时和启动。

之后将QTimer对象的timeout信号与自定义的任务槽函数connect即可。

同样以每隔1秒打印一次hello为例。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QTimer* t = new QTimer(this);//加入对象树t->start(1000);//以lambda表达式的形式设置槽函数connect(t, &QTimer::timeout, [=]{qDebug() << "hello";});
}

值得注意的是,即便是构造函数内部的控件,如果是在lambda表达式中定义的,那么也需要使用show函数才能展示出来。尤其是使用QTimer对象时,因为经常使用lambda表达式,需要格外注意这种情况。

 如果需要停止定时器,使用stop函数即可。

t->stop();

 


如有错误,敬请斧正 

相关内容

热门资讯

求 天官赐福 完整版(正文和番... 求 天官赐福 完整版(正文和番外都要!)共252章该剧讲述了细仔是裁缝师,与师妹妹头一起生活了十年,...
谁知道这个电影叫什麼名字?? 谁知道这个电影叫什麼名字??是关于乌龙院的吧,这么多年了,记不清了
蒙城名字的由来? 蒙城名字的由来?安微蒙城:由蒙而来,蒙在秦汉之初是蒙县,后汉以前单字的县, 如: 项、虞、柘、郸、酂...
傅佩荣的哲学与人生毛么样 傅佩荣的哲学与人生毛么样一开始读罗素的西方哲学史真的很难读懂,请问这本书好理解吗?是不是有些方比较明...
描写悲凉景色的好词佳句? 描写悲凉景色的好词佳句?问君能有几多愁,恰似一江春水向东流千里莺啼绿映红,水村山郭酒旗风。 南朝四百...
中国科协年会举办具身智能机器人... 来源:中国新闻网 中新网北京7月9日电 (记者 孙自法)中国科协7月9日向媒体发布信息说,第二十七届...
有没有好看的校园偶像纯情爱恋题... 有没有好看的校园偶像纯情爱恋题材的电影?我建议看《北京夏天》初恋这件小事
探索“聊斋宇宙”新的可能,这个... 转自:扬子晚报本周末,清初文学家蒲松龄笔下的“兰若寺”,将为观众呈现一个既熟悉又充满新意的“聊斋世界...
美国将恢复对乌军援,规模缩水在... 中国青年报客户端北京7月9日电(中青报·中青网记者 张昊天)7月初,美国在毫无预警的情况下暂停了对乌...
云南昆明一名8岁男童在餐馆外遭... 澎湃新闻消息,7月6日晚,云南昆明一名8岁男童骑车路过一家牛肉火锅店时,被醉酒男子用塑料椅子砸中头部...