LINUX.ORG.RU

сжать окно до минимума

 ,


0

1

Есть окно с фиксированным размером, внутри - stacked widget. В начале он одного размера, затем другого, при этом внутри огромное пространство.

Пока не очень понимаю, как автоматически сделать сжатие окна QMainWindow до минимально возможного размера, чтобы между всеми виджетами и layout-ами не оставалось пустого пространства.

Это можно решить тупым заданием фиксированного размера окна путем подгона, но может есть более профессиональный путь? Может можно как-то сделать рамку окна фиксированной, не задавая setFixedSize?

Задача проста - содержимое меняется при помощи stacked widget, содержимое по наполнению - разное, хочется чтобы оно сжималось до минимума и при этом рамка была фиксированной и нельзя было делать maximize.

Может есть что-то типа «getContentsSize»? Чтобы один раз посчитать минимальный размер чтобы все виджеты были плотно прижаты как огурчики в банке и т.о. можно было вызвать SetFixedSize?

I-Love-Microsoft ★★★★★
() автор топика

а если просто попробовать сделать resize(0,0); Он возможно растянется обратно до правильно размера.

abs ★★★
()
Ответ на: комментарий от I-Love-Microsoft

А надо выключать fixed size перед resize?

Я в qt слаб. Как крайне тупое решение, ты можешь поставить «пружины» которые сожмут лайоут до минимального размера, а потом просто установить размер окна в это значение(только помни ещё про станлартный padding у окна, который кажется равен 5 пикс)

abs ★★★
()

если надо ручками расчитать размер (для сложной какой-то байды), то для класса виджета пишем метод
QSize sizeHint() const { return size;}
если автоматом, то для нужного layout выставляем sizePolicy, например, QSizePolicy::Fixed

arrecck ★★★
()
Ответ на: комментарий от annulen

Сделал везде minimum expanding и затем resize(100, 100) и окно сжимается до минимального размера, причем виджеты не деформируются а принимают нормальный минимальный размер :)

Проблема решена!

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.