情况是这样的
我的工程中有这么三个文件 paired.cpp ; pair.cpp ; pairconnect.cpp
在pairconnect.cpp中的connect函数通过单步debug设置断点发现运行了两次,导致后面connect中的内容或者弹窗都是出现两次。
再检查之后发现整个构造函数都是运行两次。(一脸懵逼)
初步猜测是因为:
前两个文件在 private:中定义了
private:
pairConnect paircon
这样的语句。
然后在pairconnect.cpp中构造函数就会运行两次。
我刚接触qt没多久,遇到这样的事情有点懵逼
1) 可以确定信号只发送了一次,所以connect不是因为信号引起运行两次,确实是构造函数运行两次产生的问题
2) 构造函数里加了qDebug 打印了两次
求问各大神要怎么处理
5 个解决方案
#1
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
#2
我猜测就是这个原因。但是偏偏两个都有用到它,请问应该怎么做才能避免这个问题呢?
#3
如果两个类都需要连接信号槽函数,可以在响应槽函数中加标识进行区分,如果只是一个类需要连接信号和槽函数,可以将connect函数提出来不要放在构造函数中,单写一个函数,实例化后再调用
#4
不同的类实例化对象时,应避免对象名相同,以便于区分,再实例化后再去connect连接信号槽
#5
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
我猜测就是这个原因。但是偏偏两个都有用到它,请问应该怎么做才能避免这个问题呢?
不同的类实例化对象时,应避免对象名相同,以便于区分,再实例化后再去connect连接信号槽
按你说的将connect语句移出了构造函数,放在了之后再执行。问题就解决了。 多谢讲解
#1
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
#2
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
我猜测就是这个原因。但是偏偏两个都有用到它,请问应该怎么做才能避免这个问题呢?
#3
如果两个类都需要连接信号槽函数,可以在响应槽函数中加标识进行区分,如果只是一个类需要连接信号和槽函数,可以将connect函数提出来不要放在构造函数中,单写一个函数,实例化后再调用
#4
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
我猜测就是这个原因。但是偏偏两个都有用到它,请问应该怎么做才能避免这个问题呢?
不同的类实例化对象时,应避免对象名相同,以便于区分,再实例化后再去connect连接信号槽
#5
一个信号,两个类都对pairconnect对象进行了实例化,当然会调用两次了
我猜测就是这个原因。但是偏偏两个都有用到它,请问应该怎么做才能避免这个问题呢?
不同的类实例化对象时,应避免对象名相同,以便于区分,再实例化后再去connect连接信号槽
按你说的将connect语句移出了构造函数,放在了之后再执行。问题就解决了。 多谢讲解