[Qt-interest] QObject::deleteLater and private event loop (not using QCoreApplication::exec())

Zeljko zeljko at holobit.net
Fri Jun 10 11:41:04 CEST 2011


Thiago Macieira wrote:

> On Friday, 10 de June de 2011 10:11:17 Zeljko wrote:
>> Hi al,
>> When reading docs about processEvents() it says that
>> DeferredDelete events won't be processed if we use
>> our own event loop, so does it
>> mean that deleteLater() won't destroy that object ?
>> What should I do if it is so ? call
>> sendPostedEvents(0, QEvent::DeferredDelete) after
>> deleteLater() or what ? Is it ok to call sendPostedEvents(0,
>> QEvent::DeferredDelete) before call to
>> processEvents() in my own loop ?
> 
> deleteLater() events (DeferredDelete) are handled specially, to avoid
> something like:
> 
> obj->deleteLater();
> obj->something();
> run a dialog
> obj->somethingElse(); // crash here
> 
> DeferredDelete events are only handled at the same loop nesting level that
> they were created in or less deep nesting. They are never handled by deeper
> nesting levels.

Yes,I've understood that part about nesting level, but do I need to do something 
special when obj->deleteLater() or qt handles it by it self (deletes object) 
when somewhere in same loop processMessages() is called ?
Again: I'm using my own event loop.

thanks
zeljko





More information about the Qt-interest-old mailing list