背景
deleteLater 是 QObject 类对象的成员函数,用于延迟删除一个 QObject 类对象,且对 QObject 类对象的删除推荐使用 deleteLater 而非 delete 。
deleteLater
①.概述
deleteLater 依赖于事件循环,调用 deleteLater 后本质是发送了一个 DeferrerDelete 事件,在事件循环处理中把对象删除。
②.代码示例
demo = new QtClassDemo(this);
demo->deleteLater();
demo = nullptr;
deleteLater 和 delete的区别
①.deleteLater 会在当前对象的所有事件处理完成后再删除对象
demo = new QtClassDemo(this);
demo->setObjectName("demo");
qApp->postEvent(demo, new CustomEvent("hello"));
qApp->postEvent(demo, new CustomEvent("world"));
demo->deleteLater();
demo = nullptr;
②.delete 则是立即删除对象,对象的既有事件不再处理
demo = new QtClassDemo(this);
demo->setObjectName("demo");
qApp->postEvent(demo, new CustomEvent("hello"));
qApp->