当删除其中一个边时,Qt会自动删除对象之间的连接吗?
例如connect (A .. , B ..)
,当删除A(指针)或删除B时,是否会断开连接?
是否有必要在析构函数中明确使用disconnect?
答案 0 :(得分:36)
是的,QObject::~QObject
析构函数负责:
所有进出对象的信号都会自动断开,对象的所有待处理发布事件都将从事件队列中删除。
但是,使用deleteLater()
而不是直接删除QObject子类通常更安全。
请注意:
警告:等待传递待处理事件时删除QObject可能会导致崩溃。如果QObject存在于与当前正在执行的不同的线程中,则不能直接删除它。请改用deleteLater(),这会导致事件循环在所有挂起事件传递给它后删除对象。