Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: zabavart от Февраль 26, 2011, 20:57



Название: Как динамически изменить размер виджета?
Отправлено: zabavart от Февраль 26, 2011, 20:57
Суть такая: есть форма с кучей объектов, по замыслу, при нажатии на определённую кнопку, половина объектов должна исчезнуть (убираю я их методом hide()),  и автоматически размер формы должен подогнаться под минимальный, я это пытаюсь сделать вот так:
Код:
this->resize(this->minimumSize());
ничего не происходить. Эффект должен быть такой же, как в QT Дизайнере при нажатии кнопок ctrl+J


Название: Re: Как динамически изменить размер виджета?
Отправлено: SimpleSunny от Февраль 26, 2011, 21:25
void QWidget::adjustSize ()


Название: Re: Как динамически изменить размер виджета?
Отправлено: Авварон от Февраль 26, 2011, 21:28
в qt вообще есть косяк с изменением размера виджетов. По-хорошему считается что юзер должен сам задавать размер окна а не программа. Иногда это можно обойти, иногда нет. Танцы с бубном обеспечены:)


Название: Re: Как динамически изменить размер виджета?
Отправлено: zabavart от Февраль 26, 2011, 21:29
спасибо! Часа два на это убил!)


Название: Re: Как динамически изменить размер виджета?
Отправлено: iks от Февраль 27, 2011, 12:37
Ну я чаще применяю QTabWidget или QStackedWidget как setCentralWidget и уже при создании окон запоминаю размер в переменной которую потом можно всегда обработать, а если нужен размер относительно окна монитора то применяю такой скрипт в QMainWindow, окно 4/3 получается
Код:
    this->setMinimumSize(qApp->desktop()->height()/4*3/3*4, qApp->desktop()->height()/4*3);
довольно неплохо это все помогает


Название: Re: Как динамически изменить размер виджета?
Отправлено: shirushizo от Февраль 27, 2011, 16:45
...
Код:
...qApp->desktop()->height()/4*3/3*4...
...
А это зачем? qApp->desktop()->height() чем не устраивает?


Название: Re: Как динамически изменить размер виджета?
Отправлено: iks от Февраль 27, 2011, 17:57
Ну это в зависимости от ситуации, данный скрипт сдернут из моей проги, по умолчанию ее окно не занимает сразу всего экрана, три четвертых высоты монитора и от высоты окна уже высчитывается ширина окна программы, ну если юзер захочет то само собой может растянуть его.
Почему проверка высоты, ответ простой, сейчас мониторы разные, и чаще ширина более чем у стандартов 3х4. кокоче думаю кому надо тот для себя всегда сам разберется.


Название: Re: Как динамически изменить размер виджета?
Отправлено: shirushizo от Февраль 28, 2011, 18:07
Я просто про то, что данное выражение: qApp->desktop()->height()/4*3/3*4  - эквивалентно qApp->desktop()->height(), за исключением потери дробной части при каждом действии


Название: Re: Как динамически изменить размер виджета?
Отправлено: iks от Февраль 28, 2011, 23:14
да просто автоматом писал, и все )))