Important: Please read the Qt Code of Conduct -

How to move a layout to a new parent?

  • Is is possible to re-parent a layout? I've been trying to do it all day but have not had any success. Here are the details:

    I have a group of widgets (a couple text edits and labels) that form a UI element in my app. I have them grouped in a VBoxLayout. Sometimes (depending on the options the user selects) I want this group to show up on a particular TabWidget tab that's a child of my dialog. Sometimes I want the group to show up directly on the dialog, with the TabWidget hidden.

    To put it graphically, sometimes I want MyMovableLayout to appear in this hierarchy:

    QDialog -> TopLayout -> QTabWidget -> Tab -> MyMovableLayout

    and sometimes I want:

    QDialog -> TopLayout -> MyMovableLayout.

    I've tried a variety of setParent()/addLayout()/insertLayout()/show()/hide() combinations, but nothing seems to work. I can never get the layout to show up under the TopLevel layout.

    Any suggestions?

  • Nope, there is no such method. I would suggest you group the items as a widget instead of in just a layout. Just apply the layout to that new widget, and put the content-widgets in that layout. Now, you can reparent the whole widget in one go.

    on a side note: this is my 2^12 post on DevNet! I made it just before the move to :-)

Log in to reply