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