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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос о компановке  (Прочитано 5320 раз)
brucemax
Гость
« : Ноябрь 03, 2011, 13:43 »

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

В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

Проще говоря - тырк на пустом месте главной формы, тырк на панельку компоновщиков. И результат будет очевиден Улыбающийся
Записан
brucemax
Гость
« Ответ #2 : Ноябрь 03, 2011, 14:38 »

В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

Проще говоря - тырк на пустом месте главной формы, тырк на панельку компоновщиков. И результат будет очевиден Улыбающийся
Спасибо за ответ.  Я так понял вы предлагаете применить ко всей форме один из компоновщиков. То есть просто выбрать самый главный в дереве виджетов нажать правую кнопку мыши и выбрать компановка-> Cкомпоновать по горизонтали(например).   Несомненно это растягивает всё во время расскрытия формы, но в Designer компоненты становяться неприемлемым образом..   а возможноть их передвинуть как надо отсутствует. =(
Вот два скрина  до и после выполнения это действия
Записан
brucemax
Гость
« Ответ #3 : Ноябрь 03, 2011, 14:39 »

В Designer'e  щелкни на главный виджет (или выбери его справа вверху в дереве виджетов), после чего на панели инструментов (вверху под главным меню) выбери любой вид компоновщика.
Этакие синенькие схемы расположения виджетов.

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

Записан
Bepec
Гость
« Ответ #4 : Ноябрь 03, 2011, 15:01 »

Берем и за 2 минуты клепаем подобие. добавляем 1 компоновщик наверх и 2 пружинки.

Меняем 2 значения главного компоновщика - row strech  и смотрим
Записан
Bepec
Гость
« Ответ #5 : Ноябрь 03, 2011, 15:05 »

http://s2.ipicture.ru/uploads/20111103/UbS3lW84.jpg
http://s2.ipicture.ru/uploads/20111103/UpTRapII.jpg

сорри убегаю с работы ) залил туды, форум не дает xD
Записан
brucemax
Гость
« Ответ #6 : Ноябрь 03, 2011, 15:36 »

Берем и за 2 минуты клепаем подобие. добавляем 1 компоновщик наверх и 2 пружинки.

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


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

Сообщений: 4744



Просмотр профиля WWW
« Ответ #7 : Ноябрь 03, 2011, 17:15 »

такие интерфейсы надо создавать в цикле, а не копипастой. можно, например, в дизайнере создать "кирпичик" и в цикле лишь задавать кирпичику координаты и какие-то строчки.
как вы видите прогресс бар и Lcd у меня заключён в Frame..   так вот в то время как frame масштабируется вместе с окном прогресс бар остаётся маленьким..   я так понимаю что решить эту проблему можно путём применения  компановщика к прогресбару и Lcd?
набрось на фрейм или непосредственно на нужные виджеты желаемый компоновщик.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #8 : Ноябрь 03, 2011, 17:22 »

Да.
И лучше сделай отдельным виджетом. Тебе самому удобнее будет.
Записан
brucemax
Гость
« Ответ #9 : Ноябрь 04, 2011, 10:21 »

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

Да.
И лучше сделай отдельным виджетом. Тебе самому удобнее будет.
То есть вы имеете ввиду..  выделить всё в "кирпичике" нажать правую кнопку мыши и выбрать "преобразовать в виджет"..  просто не вижу разницы от добавления всего содержимого в "кирпичике" в один в фрэйм..   да и всё равно для масштабирования всего при изменении размеров окна без компоновщика я так понял не обойтись..
Спасибо за помощь..!
P.S.  Теперь думаю как сделать так чтобы размер шрифта допустим в lable изменялся при уменьшении/увеличении размеров окна.
Записан
andrew.k
Гость
« Ответ #11 : Ноябрь 04, 2011, 12:07 »

Нет.
Сделай отдельный виджет для "кирпичика". На форме сделай promote to widget, не знаю как по русски называется.
Тогда у тебя код вида

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

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

Это немного удобнее.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #12 : Ноябрь 04, 2011, 14:28 »

да и всё равно для масштабирования всего при изменении размеров окна без компоновщика я так понял не обойтись..
на свой виджет ("кирпичик") накидываешь компоновщик, а в главном окне компонуешь эти свои виджеты (например через QGridLayout)
P.S.  Теперь думаю как сделать так чтобы размер шрифта допустим в lable изменялся при уменьшении/увеличении размеров окна.
переопредели resizeEvent() своего виджета
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
« Ответ #13 : Ноябрь 04, 2011, 14:55 »

А если не делать свой виджет, который умеет сам изменять размер шрифта по resizeEvent.
Придется некрасиво извращаться.
Тут однозначно делай свой виждет.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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