遇到一个非常玄学的问题,我写的一个qt程序,简单的一个信号触发一个槽函数,但是我发现同样的代码在多次运行的情况下有时会触发槽函数,有时不会触发,完全毫无规律。
这是我简化后的代码,qDebug每次都可以打印,说明有执行,然后触发一个信号
- void MonitorWidget::doprocess_receivemessage(QMQTT::Message message)
- {
-
- static int i=0;
- if(i++%2==0)
- {
- qDebug("%s, %d\n",__FUNCTION__,__LINE__);
- emit this->ali_beep_on();
-
- }
- else {
- qDebug("%s, %d\n",__FUNCTION__,__LINE__);
- emit this->ali_beep_off();
- }
- }
这是信号绑定槽函数
- connect(this->monitor,&MonitorWidget::ali_beep_on,this,&MainWindow::tempIsTooHigh_slot);
- connect(this->monitor,&MonitorWidget::ali_beep_off,this,&MainWindow::tempIsNormal_slot);
这是槽函数,槽函数里的qDebug有时会打印,有时不打印,说明槽函数有时不被执行
- void MainWindow::tempIsTooHigh_slot()
- {
- qDebug("%s, %d\n",__FUNCTION__,__LINE__);
- emit tempIsTooHigh();
- }
-
- void MainWindow::tempIsNormal_slot()
- {
- qDebug("%s, %d\n",__FUNCTION__,__LINE__);
- emit tempIsNormal();
- }
但是我在根本没有改变代码的情况下,执行结果却会不一样,这是什么原因呢?已经试过将编译优化降到最低了,但是没什么用