Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: brucemax от Ноябрь 03, 2011, 13:43



Название: Вопрос о компановке
Отправлено: brucemax от Ноябрь 03, 2011, 13:43
Здравствуйте. В Qt Disagner создал форму, заполнил её необходимыми виджетами, сами которые расположены в GridLayout. В main.cpp с помощью showFullScreen() делаю что форма открывыается на весь экран. Вопрос: как сделать так что бы при запуске приложения, когда форма разворачивается на весь экран пропорционально ей увеличивался и GridLayout  в котором находяться виджеты?
Заранее спасибо.


Название: Re: Вопрос о компановке
Отправлено: Bepec от Ноябрь 03, 2011, 13:52
В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

Проще говоря - тырк на пустом месте главной формы, тырк на панельку компоновщиков. И результат будет очевиден :)


Название: Re: Вопрос о компановке
Отправлено: brucemax от Ноябрь 03, 2011, 14:38
В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

Проще говоря - тырк на пустом месте главной формы, тырк на панельку компоновщиков. И результат будет очевиден :)
Спасибо за ответ.  Я так понял вы предлагаете применить ко всей форме один из компоновщиков. То есть просто выбрать самый главный в дереве виджетов нажать правую кнопку мыши и выбрать компановка-> Cкомпоновать по горизонтали(например).   Несомненно это растягивает всё во время расскрытия формы, но в Designer компоненты становяться неприемлемым образом..   а возможноть их передвинуть как надо отсутствует. =(
Вот два скрина  до и после выполнения это действия


Название: Re: Вопрос о компановке
Отправлено: brucemax от Ноябрь 03, 2011, 14:39
В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

Проще говоря - тырк на пустом месте главной формы, тырк на панельку компоновщиков. И результат будет очевиден :)



Название: Re: Вопрос о компановке
Отправлено: Bepec от Ноябрь 03, 2011, 15:01
Берем и за 2 минуты клепаем подобие. добавляем 1 компоновщик наверх и 2 пружинки.

Меняем 2 значения главного компоновщика - row strech  и смотрим


Название: Re: Вопрос о компановке
Отправлено: Bepec от Ноябрь 03, 2011, 15:05
http://s2.ipicture.ru/uploads/20111103/UbS3lW84.jpg
http://s2.ipicture.ru/uploads/20111103/UpTRapII.jpg

сорри убегаю с работы ) залил туды, форум не дает xD


Название: Re: Вопрос о компановке
Отправлено: brucemax от Ноябрь 03, 2011, 15:36
Берем и за 2 минуты клепаем подобие. добавляем 1 компоновщик наверх и 2 пружинки.

Меняем 2 значения главного компоновщика - row strech  и смотрим


Спасибо вам за помощь! Я б ещё долго искал этот row streth..  А ещё маленький вопрос можно:
как вы видите прогресс бар и Lcd у меня заключён в Frame..   так вот в то время как frame масштабируется вместе с окном прогресс бар остаётся маленьким..   я так понимаю что решить эту проблему можно путём применения  компановщика к прогресбару и Lcd?


Название: Re: Вопрос о компановке
Отправлено: kambala от Ноябрь 03, 2011, 17:15
такие интерфейсы надо создавать в цикле, а не копипастой. можно, например, в дизайнере создать "кирпичик" и в цикле лишь задавать кирпичику координаты и какие-то строчки.
как вы видите прогресс бар и Lcd у меня заключён в Frame..   так вот в то время как frame масштабируется вместе с окном прогресс бар остаётся маленьким..   я так понимаю что решить эту проблему можно путём применения  компановщика к прогресбару и Lcd?
набрось на фрейм или непосредственно на нужные виджеты желаемый компоновщик.


Название: Re: Вопрос о компановке
Отправлено: andrew.k от Ноябрь 03, 2011, 17:22
Да.
И лучше сделай отдельным виджетом. Тебе самому удобнее будет.


Название: Re: Вопрос о компановке
Отправлено: brucemax от Ноябрь 04, 2011, 10:21
такие интерфейсы надо создавать в цикле, а не копипастой. можно, например, в дизайнере создать "кирпичик" и в цикле лишь задавать кирпичику координаты и какие-то строчки.
как вы видите прогресс бар и Lcd у меня заключён в Frame..   так вот в то время как frame масштабируется вместе с окном прогресс бар остаётся маленьким..   я так понимаю что решить эту проблему можно путём применения  компановщика к прогресбару и Lcd?
набрось на фрейм или непосредственно на нужные виджеты желаемый компоновщик.
Спасибо за совет!
Вот..  про цикл я как раз таки думал уже)  а сам цикл значит надо делать в конструкторе главного виджета?   
А насчёт фрэйма..  так там и компоновщик набрасывать не надо.. оказалось, он сам может служить компоновщиком..)


Название: Re: Вопрос о компановке
Отправлено: brucemax от Ноябрь 04, 2011, 10:45
Да.
И лучше сделай отдельным виджетом. Тебе самому удобнее будет.
То есть вы имеете ввиду..  выделить всё в "кирпичике" нажать правую кнопку мыши и выбрать "преобразовать в виджет"..  просто не вижу разницы от добавления всего содержимого в "кирпичике" в один в фрэйм..   да и всё равно для масштабирования всего при изменении размеров окна без компоновщика я так понял не обойтись..
Спасибо за помощь..!
P.S.  Теперь думаю как сделать так чтобы размер шрифта допустим в lable изменялся при уменьшении/увеличении размеров окна.


Название: Re: Вопрос о компановке
Отправлено: andrew.k от Ноябрь 04, 2011, 12:07
Нет.
Сделай отдельный виджет для "кирпичика". На форме сделай promote to widget, не знаю как по русски называется.
Тогда у тебя код вида

Код
C++ (Qt)
label152->setText ( 0);
label153->setText( 10 );
progressbar152->setProgress( 10 );

заменится на
Код
C++ (Qt)
superWidget4->setValue( 10, 0 );

Это немного удобнее.


Название: Re: Вопрос о компановке
Отправлено: kambala от Ноябрь 04, 2011, 14:28
да и всё равно для масштабирования всего при изменении размеров окна без компоновщика я так понял не обойтись..
на свой виджет ("кирпичик") накидываешь компоновщик, а в главном окне компонуешь эти свои виджеты (например через QGridLayout)
P.S.  Теперь думаю как сделать так чтобы размер шрифта допустим в lable изменялся при уменьшении/увеличении размеров окна.
переопредели resizeEvent() своего виджета


Название: Re: Вопрос о компановке
Отправлено: andrew.k от Ноябрь 04, 2011, 14:55
А если не делать свой виджет, который умеет сам изменять размер шрифта по resizeEvent.
Придется некрасиво извращаться.
Тут однозначно делай свой виждет.