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 just survived a painful problem dealing with this exact issue.

Long story short, a child widget, had to survive the parent, it was created 
correctly with parent being null, but in adding it to a layout, changed that of 
course.

The solution was to set the parent back to null, when the "non-layout" parent's 
destructor was called.

A Qt Smart Pointer, that allowed "unique" but another that also allowed for 
"Shared" depending on the case, that took into account the Qt parent child 
relationship, would be a great addition

Scott
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to