Resize QLayout to the minimum after widget size changes

qgridlayout, qlayout, qt

Solution

You need to set the size constraint of the layout holding all your widgets to "SetFixedSize". Although the name doesn't sound like it will work, it ensures that your layout will only use the space it needs. You will not have the problem like you do in your second screenshot.

Example:

mainLayout.setSizeConstraint(QLayout::SetFixedSize);

Problem

I've got a `QGridLayout` with a few widgets in it. The important ones are 2 labels, which I use for drawing images to the screen. Well, if the user wants, he can change the resolution of the incoming images, thus, forcing the Labels to resize. Let's assume the initial size of the label is `320x240`. The user changes the VideoMode to `640x480`, the label, and the entire GUI resizes perfectly. But when the user switches back to `320x240`, the label shrinks, but the Layout/Window does NOT. I've played around with `sizePolicies` and `sizeHints`, and `resize(0,0)`, but nothing did the trick. Here are some screenshots to clarify the problem:

Original source