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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: спрятать ряд (QLablel+QWidget) в QFormLayout  (Прочитано 9774 раз)
NOX86
Гость
« : Май 19, 2010, 13:35 »

Есть некоторое количество рядов (QLablel+QWidget) надо по некоторому условию некоторые из них прятать.
Пытался делать hide() у соответствующих QLablel и QWidget; но проблема в том, что остаются пустые места после скрытия виджетов
Подскажите, как правильно реализовать скрытие\показ ряда в QFormLayout, учитывая что в дизайнере форма уже создана.
Спасибо
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Май 19, 2010, 13:38 »

Ну попробуй setVisible(false), но на hide такой же эффект должен быть..
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
NOX86
Гость
« Ответ #2 : Май 19, 2010, 13:45 »

Код:
inline void hide() { setVisible(false); }
и эти методы есть только у виджета - у QLayoutItem оных нет
« Последнее редактирование: Май 19, 2010, 14:09 от NOX86 » Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #3 : Май 19, 2010, 14:02 »

Так ты и должен виджеты скрывать.. layout тут не при чем.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
NOX86
Гость
« Ответ #4 : Май 19, 2010, 14:07 »

Так ты и должен виджеты скрывать.. layout тут не при чем.
Обратите, пожалуйста, внимание на начало второго (2) предложения. Оно вам ни о чём не говорит? Перефразируя данное предложение: "Скрываю виджеты - остаются пустые места как на картинке, в чём я лопухнулся?"
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #5 : Май 19, 2010, 14:35 »

При растягивании у тебя виджеты тоже растягиваются? Мб забыл общий Layout поставить(для формы)?
« Последнее редактирование: Май 19, 2010, 15:22 от kibsoft » Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Wlad_C
Гость
« Ответ #6 : Май 19, 2010, 15:22 »

Когда ты создавал основную форму, ты задал ей минимальный размер (по умолчанию, видимо).
Задай минимальные размеры и политику изменения размеров основной формы, на которой прячешь виджеты. Должно все заработать.
Записан
NOX86
Гость
« Ответ #7 : Май 19, 2010, 16:22 »

Поигрался с политиками и размерами - либо то же самое, либо виджеты "утопают" (пропадают) в границах QGroupBox.
Вот с этим uixml проблемы. То же самое если скрывать програмно
Записан
0xFF
Гость
« Ответ #8 : Май 19, 2010, 23:08 »

Может попробывать добавить в лейаут, который стоит в QGroupBox это
Код
C++ (Qt)
layout->setSizeConstraint(QLayout::SetFixedSize);
Записан
NOX86
Гость
« Ответ #9 : Май 20, 2010, 00:01 »

Может попробывать добавить в лейаут, который стоит в QGroupBox это
Код
C++ (Qt)
layout->setSizeConstraint(QLayout::SetFixedSize);
Не идёт, не через код, не через Дизайнер.
Задолбался я, подскажите каким бы это ещё образом скрывать\показывать поля.
Записан
mal
Гость
« Ответ #10 : Май 20, 2010, 05:12 »

если на форме таки есть лэйаут (я для табличного представления использую QFormLayout либо QGridLayout ), то все прекрасно скрывается/раскрывается при использовании setVisible для требуемых виджетов (будь то label, lineEdit, ComboBox  и проч.).
О чем Вам собственно тут и сказали.
При этом происходит пропорциональное перераспределение остальных виджетов формы, находящихся в этом  же лэйауте.
Записан
Unnamed_Hero
Гость
« Ответ #11 : Май 23, 2010, 11:26 »

если на форме таки есть лэйаут (я для табличного представления использую QFormLayout либо QGridLayout ), то все прекрасно скрывается/раскрывается при использовании setVisible для требуемых виджетов (будь то label, lineEdit, ComboBox  и проч.).
О чем Вам собственно тут и сказали.
При этом происходит пропорциональное перераспределение остальных виджетов формы, находящихся в этом  же лэйауте.
Кстати, а возможно сделать так, чтобы виджеты в лейауте при этом не сдвигались, в расширялись только Spacer'ы рядом со спрятанным виджетом?
Записан
dox
Гость
« Ответ #12 : Август 01, 2010, 19:25 »

Приветствую. У меня похожая ситуация, но не такая как у автора поста. вообщем надо сделать виджет, кот. будет "липнуть"  к левому нижнему углу. пытался сделать через виджет,  в кот. лайоут, в нем виджеты. причем у лайоута установлено setSizeConstraint(QLayout::SetFixedSize);  Когда скрываю один из виджетов в компоновщике, то он исчезает и виджет (содержащий компоновщик) уменьшается  в размерах соотв.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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