[Development] Opinions on QTBUG-71545

André Somers andre at familiesomers.nl
Tue Nov 6 13:56:42 CET 2018


Hi,


On 05/11/2018 20:56, Elvis Stansvik wrote:
> Den mån 5 nov. 2018 kl 20:32 skrev Konstantin Shegunov <kshegunov at gmail.com>:
>> Hello,
>> Since we couldn't agree, I'd love to see some more opinions about this one.[1]
> I may be missing some detail, but I think what Thiago says makes
> sense. When children are destroyed, you know you're in the QObject
> destructor (from QObject::~QObject docs: "Destroys the object,
> deleting all its child objects."), so you know the object is now a
> QObject, no longer a QCoreApplication. If you require your
> QCoreApplication to be alive by the time your child object is
> destroyed, I think you have to ensure this on your own.
Problem is, I think, that this requirement is not always obvious. For 
your own objects, you know you cannot rely on your parent still being a 
MyClass iso of just a QObject on destruction (unless you take specific 
measures to make that so), but in this case the reliance on there still 
being a Q*Application around (not necessarily the parent) is usually not 
as obvious as a myParent->doSomethingNotFromQObject call in your 
destructor code...
>
> Like I said, I may be missing something, but that's what it looks like
> to me. I can't see why there would be an exception to the object model
> here.
>
> Elvis
>
>> Specifically:
>> 1) Is parenting to the application object a thing?
Yes. But you know that the same goes as for any QObject parent/child 
relationship: the parent is a QObject at the time of destruction (ok, 
with QWidget, you're in luck).
>> 1.a) ... and should it be allowed (i.e. accepting the proposed change)?
Yes, it should be allowed, and as you argued I think it is useful. But I 
am not sure that implies the proposed change. OTOH, as so much 
functionality in Qt requires the Q*Application to be alive (and that is 
not always obvious) , perhaps an exception *is* in order.
>> 1.b) .. if not allowed, should we put a warning in the documentation that it is wrong and shouldn't be done at all, or at least that it's discouraged.
>>
>> [1] https://bugreports.qt.io/browse/QTBUG-71545
I do think it makes sense to be able to do this, but if that is to be 
discouraged, then best be explicit about that.

André




More information about the Development mailing list