当类的一个被删除都在Qt的信号自动断开连接(Are signals in Qt automatica

2019-06-24 09:34发布

当侧的一个被删除的Qt是否自动删除对象之间的连接,?

例如connect (A .. , B ..)当A(指针)被删除,或B被删除时,将所述连接被断开?

是否有必要在析构函数中明确地使用断开?

Answer 1:

是的, QObject::~QObject析构函数需要的是护理:

所有信号并从该对象被自动断开,以及用于该对象的任何待决投递事件从事件队列中删除。
然而,它往往是更安全的使用deleteLater()而不是直接删除一个QObject子类。

但不要照顾:

警告:删除一个QObject而未决的活动等待交付可以导致崩溃。 如果它在不同的线程比当前执行的一个存在,你一定不要直接删除该QObject的。 使用deleteLater()来代替,这将导致事件循环删除对象后,所有未决事件已交付给它。



文章来源: Are signals in Qt automatically disconnected when one of the class is deleted