提问人:CDT 提问时间:5/28/2013 最后编辑:CDT 更新时间:10/13/2022 访问量:24397
如何在Qt中定期调用函数?
How to call a function periodically in Qt?
答:
0赞
Sniper90
5/28/2013
#1
创建一个使用计时器功能的函数或一个 while 循环,该循环仅等待 100 毫秒,当您的函数满足要求时,只需中断。如果您只是在此处发布的所有其他问题中进行搜索,您可以很容易地找到解决方案。
2赞
user1095108
5/28/2013
#2
一种可能性是使用信号和插槽。连接两者和计时器。QTimer
timeout
QObject
start()
http://qt-project.org/doc/qt-4.8/qtimer.html#timeout
要停止计时器,请调用 。stop()
1赞
JBL
5/28/2013
#3
您可以使用 QTimer 类。
只需声明具有所需时间间隔的 a,将函数包装在 a 中作为插槽,然后将 的信号连接到您刚刚声明的插槽。QTimer
QObject
QTimer
timeout()
然后,当满足停止调用函数的条件时,只需调用 .QTimer::stop()
22赞
parkydr
5/28/2013
#4
如果你使用的是qt,你可以QTimer,它默认创建一个重复的计时器。
文档中有一个示例(如下所示)和一个示例(模拟时钟)。
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
评论
2赞
LCsa
8/1/2018
实际上有原因将 创建为指针吗?我不能用吗?QTimer
new
QTimer timer(this);
3赞
parkydr
8/1/2018
在此示例中,计时器是在构造函数中创建的。如果您使用局部变量,则在构造结束时将超出范围,计时器将被销毁,因此不会运行timer
1赞
LCsa
8/1/2018
哦。。。即使 是班级的一员?QTimer
0赞
parkydr
8/2/2018
不,如果它是成员,它不会超出范围,因此可以正常工作。
2赞
SadeepDarshana
6/3/2019
@LCsa & parkydr 谢谢你!!!!!!!,你的第一条评论让我明白了我挣扎了 6 个小时的错误。不过与计时器无关。奇妙的巧合,我看到了这一点。
1赞
RobbieE
5/28/2013
#5
正如人们在我之前的回答中所说,您可以使用 timeout() 信号来触发函数运行。
如果你想在某个时候停止计时器,你可以连接到stop()插槽,或者直接自己调用它。
评论