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

Nikos Chantziaras realnc at arcor.de
Fri Jun 10 13:27:59 CEST 2011


On 06/10/2011 11:45 AM, 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

Just out of curiosity, why would anyone try to avoid the above?  It 
looks exactly like trying to avoid:

   delete obj;
   obj->something();

It's the same kind of coding mistake.



More information about the Qt-interest-old mailing list