Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: crazyblot от Июль 13, 2010, 13:54



Название: Помогите разобраться с привязками елементов
Отправлено: crazyblot от Июль 13, 2010, 13:54
Задачка такая. Есть масштабируемое окно. У него есть шапка (полоска графики) и футтер (такаяже полоска).
1) Как сделать так, чтобы фрейм содержащий шапку изменялся по ширине в зависимости от ширины окна.
2) Как сделать так чтобы футтер "прилипал" к нижней части окошка?


Название: Re: Помогите разобраться с привязками елементов
Отправлено: Alp от Июль 13, 2010, 14:01
Код
C++ (Qt)
void QMainWidget::UpdateLayout()
{
   if( layout() )
       delete layout();
   QVBoxLayout* mainlayout = new QVBoxLayout;
   mainlayout->setMargin(0);
   mainlayout->setSpacing(0);
   mainlayout->addWidget(header, 1);    //Stretch factor = 1
   mainlayout->addWidget(content, 20);  //Stretch factor = 20, i.e. second cell of layout has size = WidgetHeight/22 * 18
   mainlayout->addWidget(footer, 1);     //Stretch factor = 1
   setLayout(mainlayout);
}
 

Вот так?


Название: Re: Помогите разобраться с привязками елементов
Отправлено: crazyblot от Июль 13, 2010, 14:46
Ого. Я как бы графический дизайнер и с программированием не дружу. Это же можно срдствами редактора реализовать?
Если я правильно понял код создает вертикальный лейаут и вставляет в него три строчки из объектов Widget. И меняет stretchfactor для них.

Теперь нужно понять как работает tretchfactor - из вашего примера я не понял смысл приведенных значений.


Название: Re: Помогите разобраться с привязками елементов
Отправлено: crazyblot от Июль 14, 2010, 16:48
На самом деле все довольно просто. Не очевидная операция - назначение Layout для centralwidget в окне.
После того как это сделать например через Object Inspector предварительно задав Size Policy для элементов разметки окна, все начинает ресайзитсья как положено.

Вот тут сцылка на английском которая помогла сделать нужное средствами QT Designer only.

http://lists.trolltech.com/qt-interest/2007-10/thread00367-0.html