Qt 发送一次信号触发多次槽函数的解决方法

现象

      做网络通信编写信号与槽,测试发现socket连接时,触发了多次槽函数,导致出现了多个连接socket的异常情况。
      这样的现象还有很多,比如,我有个页面,利用信号槽机制,通过按键点击来打开,如果我连续多次点击按键,就会出现多个界面。

解决办法

      方法1:修改连接方式

connect(&net_dlg, SIGNAL(Send_Net_Signals()), this, SLOT(Recv_Net_Slots()));
修改为
    connect(&net_dlg, SIGNAL(Send_Net_Signals()),   
                          this,SLOT(Recv_Net_Data_Slots()),Qt::UniqueConnection);

在这里插入图片描述

      即新增,Qt::UniqueConnection条件,防止重复连接,连接过一次就不再做相同的连接了

      方法2:修改连接逻辑

      先断开之前的连接,再重新再连接;

disconnect(&net_dlg, SIGNAL(Send_Net_Signals()), this, SLOT(Recv_Net_Slots()));
connect(&net_dlg, SIGNAL(Send_Net_Signals()), this, SLOT(Recv_Net_Slots()));

      重新测试后,正常

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值