[Development] unique_ptr and Qt, Take 2
Allan Sandfeld Jensen
kde at carewolf.com
Fri May 3 21:32:01 CEST 2019
On Freitag, 3. Mai 2019 20:24:07 CEST Thiago Macieira wrote:
> On Friday, 3 May 2019 10:22:20 PDT Daniel Teske wrote:
> > std::unique_ptr<QPushButton> rightButton =
> > std::make_unique<QPushButton>("RIGHT");
> > layout->addWidget(std::move(rightButton));
>
> The problem in this particular example is that once you've added the widget,
> the rightButton smart pointer no longer has a pointer. You can't continue
> to set up your push button. In most cases, this is just a matter of moving
> the set up before the addition / reparenting, or using the other idiom
> where the object is never in a smart pointer in the first place.
>
> So this begs the question of whether std::unique_ptr is the best smart
> pointer for this scenario. Would it make sense to create one that
> understands parent- child relationship?
I would prefer that too. Something like a QPointer except it takes strong
instead of weak reference when holding objects without a parent. This means
you could pass it to an object taking ownership, and it would transition from
strong to weak, but still be valid.
Alternatively QObjects should be referenced counted, one reference could be
from a parent, but you could also strong reference with an explicit shared
pointer.
'Allan
More information about the Development
mailing list