Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: NOX86 от Май 19, 2010, 13:35



Название: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: NOX86 от Май 19, 2010, 13:35
Есть некоторое количество рядов (QLablel+QWidget) надо по некоторому условию некоторые из них прятать.
Пытался делать hide() у соответствующих QLablel и QWidget; но проблема в том, что остаются пустые места после скрытия виджетов (http://img685.imageshack.us/img685/6898/clipboard01txa.jpg)
Подскажите, как правильно реализовать скрытие\показ ряда в QFormLayout, учитывая что в дизайнере форма уже создана.
Спасибо


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: kibsoft от Май 19, 2010, 13:38
Ну попробуй setVisible(false), но на hide такой же эффект должен быть..


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: NOX86 от Май 19, 2010, 13:45
Код:
inline void hide() { setVisible(false); }
и эти методы есть только у виджета - у QLayoutItem оных нет


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: kibsoft от Май 19, 2010, 14:02
Так ты и должен виджеты скрывать.. layout тут не при чем.


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: NOX86 от Май 19, 2010, 14:07
Так ты и должен виджеты скрывать.. layout тут не при чем.
Обратите, пожалуйста, внимание на начало второго (2) предложения. Оно вам ни о чём не говорит? Перефразируя данное предложение: "Скрываю виджеты - остаются пустые места как на картинке, в чём я лопухнулся?"


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: kibsoft от Май 19, 2010, 14:35
При растягивании у тебя виджеты тоже растягиваются? Мб забыл общий Layout поставить(для формы)?


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: Wlad_C от Май 19, 2010, 15:22
Когда ты создавал основную форму, ты задал ей минимальный размер (по умолчанию, видимо).
Задай минимальные размеры и политику изменения размеров основной формы, на которой прячешь виджеты. Должно все заработать.


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: NOX86 от Май 19, 2010, 16:22
Поигрался с политиками и размерами - либо то же самое, либо виджеты "утопают" (пропадают) в границах QGroupBox.
Вот с этим uixml (http://pastebin.com/kJEWjgyR) проблемы. То же самое если скрывать програмно


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: 0xFF от Май 19, 2010, 23:08
Может попробывать добавить в лейаут, который стоит в QGroupBox это
Код
C++ (Qt)
layout->setSizeConstraint(QLayout::SetFixedSize);


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: NOX86 от Май 20, 2010, 00:01
Может попробывать добавить в лейаут, который стоит в QGroupBox это
Код
C++ (Qt)
layout->setSizeConstraint(QLayout::SetFixedSize);
Не идёт, не через код, не через Дизайнер.
Задолбался я, подскажите каким бы это ещё образом скрывать\показывать поля.


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: mal от Май 20, 2010, 05:12
если на форме таки есть лэйаут (я для табличного представления использую QFormLayout либо QGridLayout ), то все прекрасно скрывается/раскрывается при использовании setVisible для требуемых виджетов (будь то label, lineEdit, ComboBox  и проч.).
О чем Вам собственно тут и сказали.
При этом происходит пропорциональное перераспределение остальных виджетов формы, находящихся в этом  же лэйауте.


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: Unnamed_Hero от Май 23, 2010, 11:26
если на форме таки есть лэйаут (я для табличного представления использую QFormLayout либо QGridLayout ), то все прекрасно скрывается/раскрывается при использовании setVisible для требуемых виджетов (будь то label, lineEdit, ComboBox  и проч.).
О чем Вам собственно тут и сказали.
При этом происходит пропорциональное перераспределение остальных виджетов формы, находящихся в этом  же лэйауте.
Кстати, а возможно сделать так, чтобы виджеты в лейауте при этом не сдвигались, в расширялись только Spacer'ы рядом со спрятанным виджетом?


Название: Re: спрятать ряд (QLablel+QWidget) в QFormLayout
Отправлено: dox от Август 01, 2010, 19:25
Приветствую. У меня похожая ситуация, но не такая как у автора поста. вообщем надо сделать виджет, кот. будет "липнуть"  к левому нижнему углу. пытался сделать через виджет,  в кот. лайоут, в нем виджеты. причем у лайоута установлено setSizeConstraint(QLayout::SetFixedSize);  Когда скрываю один из виджетов в компоновщике, то он исчезает и виджет (содержащий компоновщик) уменьшается  в размерах соотв.