У меня invalidate()
сработало.
Обратите внимание, что если вы выполните следующее, оно будет работать так, как указано здесь (по крайней мере, в моем коде это нормально):
widget->show();
widget->layout()->invalidate();
widget->hide();
Это не показывает виджет на экране, так как вы не отказываетесь от управления обратно в очередь, пока не произойдет hide()
.Между ними invalidate()
вычисляет правильные позиции.