QTabWidget проблемы с уменьшением размера

Можно долго искать черную кошку в темной комнате...

QTabWidget оказался не так прост как хотелось бы нам казаться. Вроде все работает сразу и как надо. Накидали разных виджетов на него , все скомпоновали (с параметрами по умолчанию в ui форме), работаем и не можем понять логику изменения окна с нашим QTabWidget...

При скрытии элементов на какой-нибудь закладке размер закладки вроде бы должен уменьшаться , а он не уменьшается ... И при этом оставшиеся виджеты как-то перераспределяются по-другом (пропорционально по высоте QTabWidget).

Исходное состояние :

фотка 1

Щелкаем показать и все нормально отображается :

фотка 2

Щелкаем скрыть и размер QTabWidget к исходному не возвращается:

фотка 3

А очень хотелось бы, а то как-то странно получается : уже то ,что чекбокс съехал на середину нехорошо (он должен остаться там где был).

Суть в том , что для QTabWidget после "скрытия элемента ниже" надо сделать
adjustSize() и updateGeometry().

И тогда размер вернется к исходному:

фотка 4

Когда у вас форма с большим количеством виджетов очень легко пойти по ложному следу.

Мораль такова : надо упрощать форму до минимума, лучше сразу сохдать отдельный проект для тестирования, и искать причину будет намного легче.

Например так :

фотка 5

Ну кто-бы мог подумать , что QTabWidget будет так себя вести (Qt 4.8.1)?

Можно и нужно все понять изучив исходники Qt, но это время, а всегда хочется побыстрее получить результат.

Но благодаря решению этой проблемы пришлось понять как работают события, переопределить QApplication и посмотреть какие события летают.

Так же научились создавать свои события (на основе QEvent) и посылать их в очередь. И как их же отлавливать в коллбеках.

И даже отрисовку пришлось понять QPaintEngine и т.д.

И оказалось, что дело было совсем в другом.

То есть это был не запланированный вынос мозга там, где казалось бы ничего не предвещало проблем.

Можно еще посмотреть updateGeometry()