嵌入式大本营 2021-04-28 17:00 采纳率: 100%
浏览 461
已采纳

qt里面槽函数有时响应,有时不响应?

遇到一个非常玄学的问题,我写的一个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();
}

但是我在根本没有改变代码的情况下,执行结果却会不一样,这是什么原因呢?已经试过将编译优化降到最低了,但是没什么用

  • 写回答

4条回答 默认 最新

  • CSDN专家-黄老师 2021-04-28 17:11
    关注

    检测一下是否有阻塞,很可能是执行部分业务逻辑的代码出现问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘