【发布时间】:2014-12-27 02:27:50
【问题描述】:
一个简单的问题,因为 QT 手册没有具体说明; QT 手册中提到了 De-constructor 做到了,但没有 deletelater()。
当我们在一个对象上调用 deletelater() 时,它是否也会断开所有它的信号和插槽注册?
【问题讨论】:
一个简单的问题,因为 QT 手册没有具体说明; QT 手册中提到了 De-constructor 做到了,但没有 deletelater()。
当我们在一个对象上调用 deletelater() 时,它是否也会断开所有它的信号和插槽注册?
【问题讨论】:
不完全是。 deleteLater() 插槽schedules the object for deletion。换句话说,一旦控制回到事件循环,它就会被删除。
但是,一旦调用了 QObject 的析构函数,信号和槽就会断开连接。引用析构函数的the documentation:
所有进出对象的信号都会自动断开...
另请参阅类似的 Stack Overflow 问题:Qt Signals and Slots object disconnect?
【讨论】:
deleteLater() 只是调用delete。在 C++ 中delete 自动调用析构函数。