Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Выравнивание виджетов на форме как в VCL

Автор: gogi 19.6.2008, 17:30

Поскажите пожалуйста, как осуществлять в QT выравнивание на подобии того, какое делается в VCL свойствами align/anchors. Если на форме размещён виджет, то как сделать чтобы во время выполнения программы при изменении размеров окна размеры виджета также менялись, чтобы он не выходил за границы окна?
Смотрел в сторону Layout. Но насколько я понял, тут изменяются размеры виджетов которые внутри этих layout'ов на форме. А размер самого layout'a остаётся неизменным.

Автор: Litkevich Yuriy 19.6.2008, 17:38

ты смотрел в правильную сторону, в чем делаешь окно, руками или в дизайнере?

см. http://www.crossplatform.ru/documentation/qtdoc4.3/tutorial-t5.php

Автор: gogi 19.6.2008, 17:40

В дизайнере. Не хочется для такой мелочи писать код. Ведь это так просто делалось в Delphi/Builder!
Пока как запасной вариант думаю отлавлить resizeEvent и там менять размер layout'a.

Автор: Litkevich Yuriy 19.6.2008, 17:51

Цитата(gogi @ 19.6.2008, 21:40) *
думаю отлавлить resizeEvent

:D
Изучи этот пример, и следующий, он прояснит тебе как применять компоновщики, как их друг в друга вкладывать.

А в дизайнере положи виджеты примерно. затем читай http://www.forum.crossplatform.ru/index.php?showtopic=594&view=findpost&p=3333

Автор: gogi 19.6.2008, 18:14

Вроде QWidget::setLayout мне поможет. В примере он вызывается для MainForm. А если у меня на главной форме есть ещё ToolBar и StatusBar, будет ли разница в том, вызывать его для главной формы или для centralWidget? И ещё. Мне нужно по центру формы разместить (грубо говоря) три панели, а между ними Spacer'ы. Что-то сомнительно, что layout'ы справятся с этим :unsure:

--------------------------------
--------------------------------
|            | |     | |       |
|            | |     | |       |
|            | |     | |       |
|            | |     | |       |
|            | |     | |       |
|            | |     | |       |
--------------------------------
--------------------------------

Автор: Litkevich Yuriy 19.6.2008, 18:21

Цитата(gogi @ 19.6.2008, 22:14) *
Вроде QWidget::setLayout мне поможет.

дак ты в дизайнере делешь или нет??????
Если в коде то этот метод вызываешь для центрального виджета, ToolBar и StatusBar имеют свои области крепления, см пирмер http://www.crossplatform.ru/documentation/qtdoc4.3/examples.php#main-windows
Цитата(gogi @ 19.6.2008, 22:14) *
Мне нужно по центру формы разместить (грубо говоря) три панели

панели есть виджеты, виджеты управляются компоновщиком, у компоновщика можно задавать свойства внешнего зазора и внутреннего (между виджетами которые внутри него)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)