我需要每秒检查一个条件然后运行函数。执行是异步的,因此不会产生任何问题。我可以在循环中的某个地方调用函数吗?程序启动后我会抽出时间检查是否第二次通过。我在哪里可以找到主循环?感谢
答案 0 :(得分:4)
使用QTimer可以解决这个问题:
QTimer* timer = new QTimer();
timer->setInterval(1000); //Time in milliseconds
//timer->setSingleShot(false); //Setting this to true makes the timer run only once
connect(timer, &QTimer::timeout, this, [=](){
//Do your stuff in here, gets called every interval time
});
此外(并且由于存在关于lambda函数对目标对象生命周期的不安全性的争论),当然可以将其连接到另一个对象中的插槽:
connect(timer, &QTimer::timeout, anotherObjectPtr, &AnotherObject::method);
请注意,此方法不应包含参数,因为超时信号也是在没有参数的情况下定义的。