Резиновость в Qt приложениях (Как добится?)

Модератор: Модераторы разделов

KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Резиновость в Qt приложениях

Сообщение KukMan »

При создании простейшых приложений на библиотеке Qt (использую Qt4-Designer) при изменени размеров окна элементы остаются на том же месте... Как и где указать, чтобы позиции, размеры некоторых элементов были относительны самого окна? Я так понял, нужно создавать функцию перераспределения позиций, размеров и прочего элементов при событии изменения окна? В таком случае есть ли универсальные методы, которые позволяли б изменить свойства всех элементов? или для каждого нужно свой метод подбирать? спосибо за любые советы....
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Резиновость в Qt приложениях

Сообщение eduard_pustobaev »

Нужно всего лишь использовать layouts.
QVBoxLayout, QHBoxLayout, QGridLayout
Есть конечно ещё resizeEvent() можно его переопределять для mainWindow и там уж ресайзить/перемещать виджеты.
В дисгармонии со вселенной.
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Резиновость в Qt приложениях

Сообщение KukMan »

спасибо. ща буим гуглить и пробовать...
добавлено спустя час....
чтото не могу его понять? вот мне нужно так - одна кнопка привязана к верху и растягивается на всю ширину окна. Вторая кнопка - привязана к низу и тоже растягивается. А между ними QListWidget растягивается на все окно, кроме кнопок. И как такое сделать? (если можно приатачить *.ui файл, если не составит проблем)...
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Резиновость в Qt приложениях

Сообщение eduard_pustobaev »

KukMan писал(а):
02.11.2007 01:46
спасибо. ща буим гуглить и пробовать...

QLayout::addWidget()
QLayout::addLayout()
QWidget::setLayout()
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Резиновость в Qt приложениях

Сообщение eduard_pustobaev »

Если на формочке, то сначала кидаем гридлайот, и на нём уже размещаем виджеты. Всё нормально тогда ресайзится в соответствии с размерами окна.
В дисгармонии со вселенной.
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Резиновость в Qt приложениях

Сообщение KukMan »

я вот делаю так - (сильно упрощенный вариант). Кидаю грид лайот, в него кнопку. Жму предосмотр - такой же эффект как и без лайота...может нужно както привязать лайот к окну? и еще как в десайнере (qt4-designer) указать количество колонок в грид лайоте?
Спасибо сказали:
Аватара пользователя
Sunder
Сообщения: 630
Статус: Гордый пользователь нелегального софта
ОС: OpenSuSE 10.3 x64, Fedora 7

Re: Резиновость в Qt приложениях

Сообщение Sunder »

KukMan писал(а):
02.11.2007 02:55
я вот делаю так - (сильно упрощенный вариант). Кидаю грид лайот, в него кнопку. Жму предосмотр - такой же эффект как и без лайота...может нужно както привязать лайот к окну? и еще как в десайнере (qt4-designer) указать количество колонок в грид лайоте?


Ну вообще то логично. Кстати у кнопки может быть полиси, которая задает минимальный или неизменяемый размер, так что все нормально.
Jabber: sunder@jabber.ru
Настоящий Операман должен построить дом, посадить дерево и сделать из лисы чучело !
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Резиновость в Qt приложениях

Сообщение KukMan »

а как сделать тогда, чтобы было "не логично", т.е. растягивалось и изменяло размеры вместе с окном (нужно привязать родительственный лайот к окну? или что еще). гуглил - не врубился. не получается как на примерах...

з.ы. 2Sunder Аватарка такую злость вызвала:)) Сильный эффект.
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Резиновость в Qt приложениях

Сообщение KukMan »

Помогите плиз с лайотами этими? седня полдня гугли - чет не втыкает...
Примерчиком поделитесь *.ui с простейшей формой....
Спасибо сказали:
Аватара пользователя
Sunder
Сообщения: 630
Статус: Гордый пользователь нелегального софта
ОС: OpenSuSE 10.3 x64, Fedora 7

Re: Резиновость в Qt приложениях

Сообщение Sunder »

KukMan писал(а):
02.11.2007 10:24
а как сделать тогда, чтобы было "не логично", т.е. растягивалось и изменяло размеры вместе с окном (нужно привязать родительственный лайот к окну? или что еще). гуглил - не врубился. не получается как на примерах...

з.ы. 2Sunder Аватарка такую злость вызвала:)) Сильный эффект.


SizePolicy попробуй поменять у кнопки, поставь например maximized.

PS. Не обижайся на аватарку :) Есть и противоположные. Это следствие долгого и бесперспективного флуда с фанатами файрфокса.
Jabber: sunder@jabber.ru
Настоящий Операман должен построить дом, посадить дерево и сделать из лисы чучело !
Спасибо сказали:
KukMan
Сообщения: 92
ОС: Kubuntu 7.10

Re: Резиновость в Qt приложениях

Сообщение KukMan »

с лайотами разобрался. все дело в том, что надо было главному окну (QMainWindow или както так) назначить лайот (правая кнопки - LayOuts и там выбрать), И, действительно, все можно регулировать с помощью спейсов и сайзполиси
З.Ы. Попал на интересную тему, которая меня просветила. Ща пытаюсь адаптироватся под Оперу:))
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Резиновость в Qt приложениях

Сообщение eduard_pustobaev »

В дизайнере layout'у всего-лишь adjust size сделать нужно было.
В дисгармонии со вселенной.
Спасибо сказали: