How to remove widget's layout w/o deleting it's children widgets?



  • I have MainWindow with many frames created when the application starts. I want to switch between them like that:

    if (this->layout() != Q_NULLPTR) delete this->layout();
    QVBoxLayout *const frame_layout = new QVBoxLayout(ui->frame);
    frame_layout->addWidget(&basicSettings_frame);

    but basicSettings_frame is being deleted, causing error. Do I really should reload all the controls (and recreate the frame before that) every time the user switches between frames or I somehow can tell the frame to not be the child of the layout anymore?


  • Moderators

    No, you don't have to (and should not) recreate the layout contents. Just take the widget out of the layout before you delete. Use takeAt() for that.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.