crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Диалог со скрытыми дополнительными настройками, Кажется я что-то делаю не так
Kagami
  опции профиля:
сообщение 18.10.2009, 22:03
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Решил сделать диалог со скрытыми дополнительными настройками. Пара полей ввода скрыта пока не будет нажата кнопка "More >>". Я соединил сигнал ее нажатия со слотом где переключаю видимость эти элементов. В этом слоте я также подстраиваю размер формы под новый размер. Но меня смущают два момента:
1. Чтобы изменение размера произошло надо вызывать adjustSize() два раза;
2. Если изменить размер формы и показать/скрыть дополнительные поля ввода, ее размер снова становится минимальным. Я же хочу сохранять горизонтальный размер формы.
Поэтому мне кажется что я что-то делаю не правильно. Есть у кого-нибудь идеи как это правильно делается?
Минимальный компилируемый проект и скриншоты ниже ;)
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  moredlg.zip ( 2,81 килобайт ) Кол-во скачиваний: 140
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.10.2009, 22:26
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Kagami @ 19.10.2009, 2:03) *
Есть у кого-нибудь идеи как это правильно делается?
неа, даже у знаменитых авторов знаменитой книги ;)
Я компилил их пример, он кривой дальше некуда :D
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(Kagami @ 18.10.2009, 23:03) *
1. Чтобы изменение размера произошло надо вызывать adjustSize() два раза;

Скорее всего это связано с тем, что метод setVisible(false) пораждает эвент, а не меняет видимость виджетов моментально, также как и пересчет размеров виджетов в лэйауте происходит уже при выходе из метода toggleInput. Т.е. adjustSize нужно ставить последним в очереди. Это можно сделать через QTimer::singleShot() или через emit своего queued сигнала или через QMetaObject::invokeMethod с Qt::QueuedConnection. Или просто вызвав обработку эвентов заранее:

    QApplication::processEvents();
    adjustSize()


Цитата(Kagami @ 18.10.2009, 23:03) *
2. Если изменить размер формы и показать/скрыть дополнительные поля ввода, ее размер снова становится минимальным. Я же хочу сохранять горизонтальный размер формы.


Можно так сделать:

    m_ui->setupUi(this);
    setMaximumWidth(width());
    setMinimumWidth(width());


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 5.11.2009, 16:39
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Кстати http://crossplatform.ru/node/242
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 11.12.2024, 13:49