当一个
QObject
正在接受事件队列时,如果中途被销毁掉了,就是出现问题了。
所以
Qt
中建大家不要直接
Delete
掉一个
QObject
,如果一定要这样做,要使用
QObject
的
deleteLater
()
函数,它会让所有事件都发送完一切处理好后马上清除这片内存,而且就算
调用多次的
deletelater
也不会有问题。
发送一个删除事件到事件系统:
void QObject::deleteLater()
{
QCoreApplication::
postEvent
(this, new QEvent(QEvent::
DeferredDelete
));
}