Чтобы открывающееся окно могло установить само себе размер - это задача не тривиальная.
Как правило нам надо установить размер больше чем по умолчанию, чтобы показать все элементы на экране.
Как известно в Qt такое возможно через использование setMinimumSize. Это железно всегда сработает при вызове adjustSize() окну в его же конструкторе.
Примечание: переопределение sizeHint не поможет решить задачу в случае например с QDialog. Он все равно откроется не такой как надо.
Но как далее также разрешить пользователю изменение размера окна, а именно его уменьшение.
Ответ как ни странно есть. Сначала в конструкторе окна установать требуемое setMinimumSize(...).
Потом при вызове exec() или show() окна скинуть minimumSize ( setMinimumSize(QSize(0,0)) ), чтобы пользователь смог изменять размер окна по своему усмотрению.
И это сработает!
Сначала пользователь увидит окно требуемого размера (чтобы все максимально удобно отображалось), а потом через справа внизу Grip-ом сможет поиграть размером окна.
Также можно запоминать размер окна измененный пользователем и при открытии в следующий раз восстанавливать ему его предыдущий размер.
Очень полезная идея.
Реализовано например в нашей программе БИТ драйвер ККТ.