55

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

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

是否有必要在析构函数中显式使用断开连接?

4

1 回答 1

53

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

进出对象的所有信号都会自动断开,并且对象的任何未决已发布事件都将从事件队列中删除。
但是,使用它通常deleteLater()比直接删除 QObject 子类更安全。

不过要小心:

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

于 2012-05-13T10:02:33.753 回答