Wagmare
Wagmare

Reputation: 1406

deleting widget of QScrollArea

i have to update or change the widget inside the scrollArea depending on the selection of tree items in left.

 QWidget *scrollAreaWidget = new QWidget;

    scrollAreaWidget->setObjectName("ScrollAreaWidget");

    QVBoxLayout *scrollLayout = new QVBoxLayout;
    scrollAreaWidget->setLayout(scrollLayout);
    foreach (PyInfo pInfo, list) {
        //Adding widget
        rowWidget->setObjectName(objName);
            scrollLayout->addWidget(rowWidget);

    }
    m_pScrollArea->setWidget(scrollAreaWidget);

so when i need to update a new widget i tried to clear the old widget added to scrollArea like this

QWidget *wid = m_pScrollArea->widget();

    if(wid)
        wid->deleteLater();

is deleteLated() call is enough or i have to explicitly delete all the widgets i added as a child to the ScrollArea->widget() and disconnect my signals in it.

Upvotes: 1

Views: 3850

Answers (1)

Evgeny
Evgeny

Reputation: 4010

Yes, this should be enough. Qt takes care about the rest. From Qt documentation:

The parent takes ownership of the object; i.e., it will automatically delete its children in its destructor.

......

A signal-slot connection is removed when either of the objects involved are destroyed.

Upvotes: 1

Related Questions