当删除其中一个类时,Qt中的信号是否自动断开

时间:2012-05-13 09:59:57

标签: qt destructor qt-signals

当删除其中一个边时,Qt会自动删除对象之间的连接吗?

例如connect (A .. , B ..),当删除A(指针)或删除B时,是否会断开连接?

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

1 个答案:

答案 0 :(得分:36)

是的,QObject::~QObject析构函数负责:

  

所有进出对象的信号都会自动断开,对象的所有待处理发布事件都将从事件队列中删除。
  但是,使用deleteLater()而不是直接删除QObject子类通常更安全。

请注意:

  

警告:等待传递待处理事件时删除QObject可能会导致崩溃。如果QObject存在于与当前正在执行的不同的线程中,则不能直接删除它。请改用deleteLater(),这会导致事件循环在所有挂起事件传递给它后删除对象。