Reputation: 17217
I want to have a small QFormLayout
that grows to fill its parent widget.
I created a new .ui file using the QWidget
template in Qt Designer. I put a QFormLayout
inside that 'window', then put some controls inside that QFormLayout
.
This all works reasonably well, but the QFormLayout
always stays at the size I set in Qt Designer. I would like the QFormLayout
to fill its parent widget and grow/shrink with it.
How can I accomplish that?
Upvotes: 111
Views: 197032
Reputation: 1683
You need to change the default layout type of top level QWidget object from Break layout type to other layout types (Vertical Layout, Horizontal Layout, Grid Layout, Form Layout) by pressing one of the layout related toolbar buttons.
For example:
To something like this:
Upvotes: 12
Reputation: 5277
The accepted answer (its image) is wrong, at least now in QT5. Instead you should assign a layout to the root object/widget (pointing to the aforementioned image, it should be the MainWindow
instead of centralWidget
). Also note that you must have at least one QObject
created beneath it for this to work. Do this and your ui will become responsive to window resizing.
Upvotes: 13
Reputation: 491
I found it was impossible to assign a layout to the centralwidget until I had added at least one child beneath it. Then I could highlight the tiny icon with the red 'disabled' mark and then click on a layout in the Designer toolbar at top.
Upvotes: 48
Reputation: 6329
In Designer, activate the centralWidget and assign a layout, e.g. horizontal or vertical layout. Then your QFormLayout will automatically resize.
Always make sure, that all widgets have a layout! Otherwise, automatic resizing will break with that widget!
Controls insist on being too large, and won't resize, in QtDesigner
Upvotes: 155