Название: Победить Layout в дизайнере Отправлено: oxotnik от Июнь 26, 2009, 15:44 Имеется форма, кидаю на нее 2 QGroupBox, по высоте их растягиваю на всю форму, по ширине - таким образом, что ширина левого получатся ~1/2 ширины правого.
Выставляю форме горизонтальный Layout, в дизайнере все прекрасно - пропорции GroupBox-ов сохраняются Запускаю форму - получаю одинаковую ширину GroupBox-ов. В документации сказано: Цитировать Однажды задав логическое расположение, вы получаете следующие преимущества: как мне добится в рантайме, того что бы сохранились пропорции GroupBox-ов ?* Позиционирование дочерних виджетов. * По умолчанию устанавливаются разумные размеры окон. * Разумные минимальные размеры окон. * Обработка изменения размеров. * Автоматическое обновление при смене следующих параметров содержимого: Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июнь 26, 2009, 16:03 Имеется форма, кидаю на нее 2 QGroupBox, по высоте их растягиваю на всю форму, по ширине - таким образом, что ширина левого получатся ~1/2 ширины правого. логическое расположение сначала надо задать! :)Выставляю форме горизонтальный Layout, в дизайнере все прекрасно - пропорции GroupBox-ов сохраняются Запускаю форму - получаю одинаковую ширину GroupBox-ов. В документации сказано: Цитировать Однажды задав логическое расположение, вы получаете следующие преимущества: Сначала кладешь Layout, а потом в него свои GroupBox, далее настраиваешь Layout на нужные пропорции. Почитай доку по Layout. Посмотри примеры. Название: Re: Победить Layout в дизайнере Отправлено: oxotnik от Июнь 26, 2009, 16:20 логическое расположение сначала надо задать! :) Смотрел в примерах webkit\previewer\previewer.uiСначала кладешь Layout, а потом в него свои GroupBox, далее настраиваешь Layout на нужные пропорции. Почитай доку по Layout. Посмотри примеры. там форме назначен горизонтальный Layout, и на самой форме лежат GroupBox-ы и разделены Splitter-ом (к стати, если на форму кинуть Layout то в нем спрлиттер не ставится) делал по образу и подобию, однако в примерах работает, у меня никак :-[ Название: Re: Победить Layout в дизайнере Отправлено: lit-uriy от Июнь 26, 2009, 16:56 >>как мне добится в рантайме, того что бы сохранились пропорции GroupBox-ов ?
В рантайме всё будет также как и в дизайнере. Ни какой разницы. Если получил разницу, значит делаешь не так как расказываешь, давай подробности в плоть до щелчков мыши (когда, и куда) >>логическое расположение сначала надо задать! >>Сначала кладешь Layout, а потом в него свои GroupBox, далее настраиваешь Layout на нужные пропорции. Не надо так делать. Ты получшь лишний компоновщик. Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июнь 26, 2009, 17:03 >>логическое расположение сначала надо задать! Это смотря что он вообще хочет добиться.>>Сначала кладешь Layout, а потом в него свои GroupBox, далее настраиваешь Layout на нужные пропорции. Не надо так делать. Ты получшь лишний компоновщик. UI в студию! Название: Re: Победить Layout в дизайнере Отправлено: oxotnik от Июнь 26, 2009, 17:07 Создаю новый проект (форму)
Кидаю на форму 2 GroupBox Делаю им размеры (какие хочу получить в пропорциях) мышкой растягиваю Выделяю их (2 GroupBox) Нажимаю на сплиттер (из 2 GroupBox получается маленькая синяя точка на форме) Правой кнопкой на форме, в меню Layout=>Layout of Horizontaly (синяя точечка превращается в 2 GroupBox, расположенных как надо и растянутых в соответствии с пропорциями) Все. В дизайнере все прекрасно отображается Запускаю - размеры одинаковые Так в дизайнере получается: |------------------| | | | | | | | | | | | | |------------------| Так в рантайме: |-------------------| | | | | | | | | | | | | |-------------------| Название: Re: Победить Layout в дизайнере Отправлено: oxotnik от Июнь 26, 2009, 17:08 UI в студию! XML или ui_...*h ?Код
Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июнь 26, 2009, 17:45 1) Поскольку у тебя не заданы(каким-либо образом) пропорции для groupBox, то при изменении размеров окна они будут ресайзится пропорционально!
2) Это ОДНОЗНАЧНО прикол дизайнера!!! При запуске все правильно! Дизайнер не может записать текущие положения разделителей, поскольку только программно, через setSizes, и естественно такого свойства не может быть, можно задать текущее положение разделителей! Название: Re: Победить Layout в дизайнере Отправлено: lit-uriy от Июнь 26, 2009, 19:37 >>Делаю им размеры (какие хочу получить в пропорциях) мышкой растягиваю
Если ты не задаёшь политику размеров, то это бесполезно, компоновщик будет управлять размерами. >>Нажимаю на сплиттер (из 2 GroupBox получается маленькая синяя точка на форме) Splitter - Разделитель - частный случай компоновщика. Ты не указал политику размера (как можно уменьшать), он и уменьшил до безобразия. Название: Re: Победить Layout в дизайнере Отправлено: lit-uriy от Июнь 26, 2009, 19:38 >>XML или ui_...*h ?
ui, он и есть XML. А c++ файл мы и сами из него получим. Название: Re: Победить Layout в дизайнере Отправлено: break от Июнь 26, 2009, 20:16 В вашем случае не подойдет жесткое задание ширины для одного из групп-боксов? - скажем для левого ставите maxWidth= XXX и он уже не растянегтся более чем XXX. Для правого ничего не ставите и он будет занимать оставшуюся часть - если я правильно понимаю то настраивая политики - там виджеты все равно будут стремиться к некоторому заранее заданному идеальному размеру.
Название: Re: Победить Layout в дизайнере Отправлено: oxotnik от Июнь 26, 2009, 21:15 Так как можно в дизайнере (без ручного кодирования) сделать так, что бы один из виджетов по умолчанию был вдвое (втрое, и т.п. любой коэффициент ) уже другого (соседнего) виджета?
Как политики размеров настраивать? ЗЫ: max...Size не подходит - в рантайме надо по разному их ресайзить. Название: Re: Победить Layout в дизайнере Отправлено: Авварон от Июнь 26, 2009, 22:01 grid layout?
Название: Re: Победить Layout в дизайнере Отправлено: MoPDoBoPoT от Июнь 26, 2009, 22:35 Так как можно в дизайнере (без ручного кодирования) сделать так, что бы один из виджетов по умолчанию был вдвое (втрое, и т.п. любой коэффициент ) уже другого (соседнего) виджета? Как политики размеров настраивать? ЗЫ: max...Size не подходит - в рантайме надо по разному их ресайзить. У компановщика есть свойство layoutStretch, в нем через запятую указываются факторы растяжки идущих по порядку виджетов. Например, если у нас в горизонтальном компановщике 2 виджета и мы хотим достичь отношения 1:2, то надо просто в проперти написать 1,2 Название: Re: Победить Layout в дизайнере Отправлено: VIMSVEI от Июль 02, 2009, 10:50 А у меня почему то у компановщика нет такого свойства ???
Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июль 02, 2009, 11:20 А у меня почему то у компановщика нет такого свойства ??? А какой у тебя компоновщик?Название: Re: Победить Layout в дизайнере Отправлено: MoPDoBoPoT от Июль 02, 2009, 12:00 А у меня почему то у компановщика нет такого свойства ??? Во-первых это свойство появилось в Qt начиная с версии 4.5Во-вторых это свойство у класса QBoxLayout и от него производных, соответственно. Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июль 02, 2009, 12:15 Во-вторых это свойство у класса QBoxLayout и от него производных, соответственно. Ты наверно имел ввиду у класса QBoxLayout и от него производных нет такого свойства.Название: Re: Победить Layout в дизайнере Отправлено: spectre71 от Июль 02, 2009, 12:54 Во-вторых это свойство у класса QBoxLayout и от него производных, соответственно. Ты наверно имел ввиду у класса QBoxLayout и от него производных нет такого свойства.Кстати у QGridLayout, тоже можно задавать columnStretch, rowStretch |