QTimer插槽多次触发?

QTimer插槽多次触发?,qt,raspberry-pi,qtimer,qt5.12,Qt,Raspberry Pi,Qtimer,Qt5.12,我正在为Raspberry PI创建一个UI应用程序,以便在确定的超时(5秒)时从传感器读取数据。问题是QTimer超时槽被多次调用 { //at system init readTempCur = new QTimer(this); connect(readTempCur, SIGNAL(timeout()), this, SLOT(readSensor())); readTempCur->start(SAMPLINGTIME); readSensor(); //added to

我正在为Raspberry PI创建一个UI应用程序,以便在确定的超时(5秒)时从传感器读取数据。问题是QTimer超时槽被多次调用

{   //at system init
readTempCur = new QTimer(this);
connect(readTempCur, SIGNAL(timeout()), this, SLOT(readSensor()));
readTempCur->start(SAMPLINGTIME);
readSensor();   //added to call on boot itself, can be removed
}
void HomePage::readSensor(void) {
   readTempCur->stop();
   qDebug() << "Read Sensor triggerred at " <<QDateTime::currentDateTime().toString();
   //DO my actions
   readTempCur->start(SAMPLINGTIME);
 }
{//at system init
readTempCur=新的QTimer(此);
连接(readTempCur,信号(超时()),此,插槽(readSensor());
readTempCur->start(采样时间);
readSensor();//添加到启动时调用本身,可以删除
}
void主页::readSensor(void){
readTempCur->stop();
qDebug()该函数将启动/重新启动计时器

您的
readSensor
功能停止计时器,然后重新启动

移除
启动
以修复它

void HomePage::readSensor(void) {
   readTempCur->stop();
   qDebug() << "Read Sensor triggerred at " <<QDateTime::currentDateTime().toString();
   //DO my actions
   //readTempCur->start(SAMPLINGTIME);
 }

不要停止或重新启动
readSensor()
中的计时器。只需执行以下操作:

void HomePage::readSensor(void)
{
    qDebug() << "Read Sensor triggerred at " <<QDateTime::currentDateTime().toString();
    //DO my actions
}
void主页::readSensor(void)
{

qDebug()你想让计时器只运行一次吗?在你的
readSensor
中,你调用了
start
函数,这就是为什么它会再次调用它。是的,我添加了这个函数是为了解决插槽函数的执行时间是否超过超时时间,开始时我停止计时器,完成所有作业后,我再次启动计时器。因此使用一个timer用于传感器读取,另一个用于执行超时“问题是QTimer超时槽被多次调用”是的,当然是。默认情况下QTimer就是这样工作的。但现在还不清楚您真正想要的是什么。您只想触发一次吗?在这里,在同一时间多次触发,而不是在定义的超时时间,您能看到屏幕截图吗?在完全相同的时间戳下,它被触发了两次,这是随机行为,或者这不起作用,在开始时,我停止了计时器,甚至删除了slot函数中的start()和stop()。同样的行为,这并不是在所有调用中都会发生,而是随机发生的,有时它会被调用2次,有时甚至会被调用4-5次。您是否尝试只删除
start()
?采样时间的值是多少?我想你必须提供更多的代码。我看不出这里有什么问题。请更新你的问题。我也怀疑同样的问题,问题应该在项目中的其他地方,但我需要一些建议,这个多超时触发器是否可能,或者它是来自Qt12.0的错误s、 但结果是一样的。@Kanni1303那么恐怕没有人能帮你。问题出在别处,不在你发布的代码中。谢谢大家!得到QT人员的帮助,sysInit()被随机调用多次;它再次将同一插槽重新连接到同一信号。我希望修复后可能会修复这个问题
void HomePage::readSensor(void)
{
    qDebug() << "Read Sensor triggerred at " <<QDateTime::currentDateTime().toString();
    //DO my actions
}