点击一次pushButton会对相应的slot执行两次

分析原因:

1,使用了可视化设计器设计UI,(RAD方式是高效和协作的一种有效手段)

2,在设计器中设置了signal和slot

3,slot函数采用了on_对象名_signal名的规则或者在代码中显示connect了不是这种规则的函数

要查为什么触发两次,要打开ui文件对应的c++代码,里面有这么一句:

 QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));

这句代码产生是因为手工进行了signal和slot的设置,

并且该slot符合QT信号-槽默认的连接规则,所以相当与有两句

 QObject::connect(pushButton, SIGNAL(clicked()), QtApp1Class, SLOT(on_pushButton_clicked()));

即,这对信号-槽进行了两次连接,所以会点击一次pushButton会出现两次slot函数on_pushButton_clicked()的调用。

 

解决方案:

A:如果使用设计器进行信号-槽的连接,就要注意函数名不要使用QT默认连接规则,也不要再自行对信号和槽进行连接。

B:不采用设计器进行信号-槽连接,避免不同VS add-in的生成不同,QTCreater和VS add-in的生成规则不同,采用手工连接。

推荐采用手工连接方式。不会出现意想不到的问题。


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值