![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Kagami |
![]()
Сообщение
#1
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Решил сделать диалог со скрытыми дополнительными настройками. Пара полей ввода скрыта пока не будет нажата кнопка "More >>". Я соединил сигнал ее нажатия со слотом где переключаю видимость эти элементов. В этом слоте я также подстраиваю размер формы под новый размер. Но меня смущают два момента:
1. Чтобы изменение размера произошло надо вызывать adjustSize() два раза; 2. Если изменить размер формы и показать/скрыть дополнительные поля ввода, ее размер снова становится минимальным. Я же хочу сохранять горизонтальный размер формы. Поэтому мне кажется что я что-то делаю не правильно. Есть у кого-нибудь идеи как это правильно делается? Минимальный компилируемый проект и скриншоты ниже ![]()
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Andrewshkovskii |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: ![]() ![]() ![]() |
Может вот тут найдешь ответ?
Тык. |
|
|
SABROG |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
1. Чтобы изменение размера произошло надо вызывать adjustSize() два раза; Скорее всего это связано с тем, что метод setVisible(false) пораждает эвент, а не меняет видимость виджетов моментально, также как и пересчет размеров виджетов в лэйауте происходит уже при выходе из метода toggleInput. Т.е. adjustSize нужно ставить последним в очереди. Это можно сделать через QTimer::singleShot() или через emit своего queued сигнала или через QMetaObject::invokeMethod с Qt::QueuedConnection. Или просто вызвав обработку эвентов заранее:
2. Если изменить размер формы и показать/скрыть дополнительные поля ввода, ее размер снова становится минимальным. Я же хочу сохранять горизонтальный размер формы. Можно так сделать:
![]() |
|
|
SABROG |
![]()
Сообщение
#5
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 3.12.2023, 14:44 |