【发布时间】:2020-09-18 14:20:18
【问题描述】:
我在我的 qt 项目的 cpp 文件中设置了一个全局变量。我想每 100 毫秒检查一次这个变量,持续 5 秒,如果 5 秒后变量为 0,我想创建一个消息框。这是我的代码示例:
db.cpp:
if(case){
g_clickedObj.readFlag = 1 ;
}
else{
g_clickedObj.readFlag = 0 ;
}
主窗口.cpp
this->tmr = new QTimer();
connect(this->tmr,SIGNAL(timeout()),this,SLOT(callSearchMachine()));
tmr->start(5000);
【问题讨论】:
-
g_clickedObj.readFlag == 1 ;-- 这不可能是代码,因为您使用的是==而不是=。 -
如果您在计时器所在的同一线程中设置变量,我不明白您为什么需要
QTimer来定期检查其值。相反,设置变量可能会发出一个信号,并且插槽(连接到此信号)可能会启动计时器以等待 5 秒,直到弹出消息框。如果变量可以/将在另一个线程中设置,那将是一个不同的故事......SO: How to alter Qt Widgets in WINAPI threads?