I have a QLabel that contains an image. I need to ensure that the image allways takes 100% of the QLabel width, but preserving aspect ration is just as important. This means I also need to increase QLabel height so that the image fits. Like on this image, the height must be fit:

I Qt designer I see no way to specify preferred aspect ratio, so I just tried to override resize event and try to force correct height upon resize:
void QPictureLabel::resizeEvent(QResizeEvent *event)
{
    qDebug()<<"Resized.";
    // Current image width in pixels
    float pw = myPixmap.width();
    // current label width in pixels
    float my_width = width();
    // ratio of label and image width can decide the new required label height
    float new_h = (my_width/pw)*myPixmap.height();
    // This is an attempt to prevent endless loop... didn't work out
    if(new_h!=height()) {
        // Force new height (that works)
        resize(my_width, new_h);
        // Tell the layout to move other elements (that doesn't work at all!)
        updateGeometry();
    }
}
Before adding the updateGeometry call it just looked like this:

As you can see (I highlighted it with red frame), the label indeed expanded as necessary. But other widgets do not care about that.
I added updateGeometry call, but the result was endless loop for some reason. I need the correct way to inform the layout that QLabel requires more space.