源码:
void QObject::deleteLater()
{
QCoreApplication::postEvent(this, new QDeferredDeleteEvent());
}
bool QObject::event(QEvent *e)
{
switch (e->type()) {
......
case QEvent::DeferredDelete:
qDeleteInEventHandler(this);
break;
}
}
void qDeleteInEventHandler(QObject *o)
{
delete o;
}
从源码可以看到,返回到事件循环后,调用deleteLater()
的对象才会被销毁,否则不执行。
如果线程中没有运行着的事件循环,线程中的对象调用了dele