Russian Qt Forum
Сентябрь 30, 2024, 12:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как динамически изменить размер виджета?  (Прочитано 11575 раз)
zabavart
Гость
« : Февраль 26, 2011, 20:57 »

Суть такая: есть форма с кучей объектов, по замыслу, при нажатии на определённую кнопку, половина объектов должна исчезнуть (убираю я их методом hide()),  и автоматически размер формы должен подогнаться под минимальный, я это пытаюсь сделать вот так:
Код:
this->resize(this->minimumSize());
ничего не происходить. Эффект должен быть такой же, как в QT Дизайнере при нажатии кнопок ctrl+J
Записан
SimpleSunny
Гость
« Ответ #1 : Февраль 26, 2011, 21:25 »

void QWidget::adjustSize ()
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Февраль 26, 2011, 21:28 »

в qt вообще есть косяк с изменением размера виджетов. По-хорошему считается что юзер должен сам задавать размер окна а не программа. Иногда это можно обойти, иногда нет. Танцы с бубном обеспечены:)
Записан
zabavart
Гость
« Ответ #3 : Февраль 26, 2011, 21:29 »

спасибо! Часа два на это убил!)
Записан
iks
Гость
« Ответ #4 : Февраль 27, 2011, 12:37 »

Ну я чаще применяю QTabWidget или QStackedWidget как setCentralWidget и уже при создании окон запоминаю размер в переменной которую потом можно всегда обработать, а если нужен размер относительно окна монитора то применяю такой скрипт в QMainWindow, окно 4/3 получается
Код:
    this->setMinimumSize(qApp->desktop()->height()/4*3/3*4, qApp->desktop()->height()/4*3);
довольно неплохо это все помогает
Записан
shirushizo
Гость
« Ответ #5 : Февраль 27, 2011, 16:45 »

...
Код:
...qApp->desktop()->height()/4*3/3*4...
...
А это зачем? qApp->desktop()->height() чем не устраивает?
Записан
iks
Гость
« Ответ #6 : Февраль 27, 2011, 17:57 »

Ну это в зависимости от ситуации, данный скрипт сдернут из моей проги, по умолчанию ее окно не занимает сразу всего экрана, три четвертых высоты монитора и от высоты окна уже высчитывается ширина окна программы, ну если юзер захочет то само собой может растянуть его.
Почему проверка высоты, ответ простой, сейчас мониторы разные, и чаще ширина более чем у стандартов 3х4. кокоче думаю кому надо тот для себя всегда сам разберется.
Записан
shirushizo
Гость
« Ответ #7 : Февраль 28, 2011, 18:07 »

Я просто про то, что данное выражение: qApp->desktop()->height()/4*3/3*4  - эквивалентно qApp->desktop()->height(), за исключением потери дробной части при каждом действии
Записан
iks
Гость
« Ответ #8 : Февраль 28, 2011, 23:14 »

да просто автоматом писал, и все )))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.187 секунд. Запросов: 23.