当对象之一被删除时,Qt 是否会自动删除对象之间的连接?
例如与
connect(A, ..., B, ...)
一样,当删除A
或B
指向的对象时,连接会断开吗?
或者是否有必要在析构函数中显式使用
disconnect
?
QObject::~QObject
析构函数负责处理这个问题:
传入和传出该对象的所有信号都会自动断开,并且该对象的任何挂起的已发布事件都会从事件队列中删除。
然而,使用通常比直接删除 QObject 子类更安全。deleteLater()
不过要小心:
警告: 在待处理事件等待传递时删除 QObject 可能会导致崩溃。如果 QObject 存在于与当前正在执行的线程不同的线程中,则不得直接删除该 QObject。请改用deleteLater(),这将导致事件循环在所有待处理事件传递给对象后删除该对象。