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