Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Firefox от Январь 22, 2014, 08:23



Название: QLayout
Отправлено: Firefox от Январь 22, 2014, 08:23
Здравствуйте. пытаюсь в Layout добавить части формы, которые отдельными классами сделаны, но равномерного размещения не получается а все криво.
Код:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

//по ширине различные элементы по высоте одинаковые
    lft= new left(this);
    rt= new right(this);
    ctr= new centr(this);


     QHBoxLayout *hlay_centr=new QHBoxLayout;
     hlay_centr->setSpacing(0);
     hlay_centr->setMargin(0);
     hlay_centr->addWidget(lft);
     hlay_centr->addWidget(ctr);
     hlay_centr->addWidget(rt);
     setLayout(hlay_centr);


}


Название: Re: QLayout
Отправлено: carrygun от Январь 22, 2014, 08:52
Картинку хотябы покажите. И от каких классов унаследована эта троица?


Название: Re: QLayout
Отправлено: Firefox от Январь 22, 2014, 13:36
классы унаследованы от QWidget. в них только форма создана при помощи дизайнера.


Название: Re: QLayout
Отправлено: Firefox от Январь 22, 2014, 13:42
это вся картинка с Layout
(http://saveimg.ru/thumbnails/22-01-14/cb823798f11577e2f724dfa1418108e1.png)

отдельно класс left вид
(http://saveimg.ru/thumbnails/22-01-14/a2e2b8e53caffcfd10d83af3dc24a1bc.png)



Название: Re: QLayout
Отправлено: Firefox от Январь 22, 2014, 13:46
содержание класса left
Код:
#include "left.h"
#include "ui_left.h"

left::left(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::left)
{
    ui->setupUi(this);
}

left::~left()
{
    delete ui;
}


Название: Re: QLayout
Отправлено: carrygun от Январь 23, 2014, 04:56
Виджеты скорее всего подстраиваются под внутреннее содержимое. Тут либо задавать им конкретные размеры (самим контейнерам) либо поиграться с какими еще параметрами, типа stretch, sizePolicy.

А писать интерфейс в коде - это по условию задачи задумано? В дизайнере можно быстрее и проще же.


Название: Re: QLayout
Отправлено: kambala от Январь 23, 2014, 12:34
А писать интерфейс в коде - это по условию задачи задумано? В дизайнере можно быстрее и проще же.
несогласен. когда на форме много всяких компонентов, скомпонованных в дизайнере (лэйаутов тоже много), то когда приходится добавлять новый компонент, это просто тихий ужас. в коде же это равносильно просто «перетасовке» лэйаутов, что куда проще. ну а простые виджеты естественно быстрее в дизайнере спроектировать.


Название: Re: QLayout
Отправлено: Smogg от Январь 23, 2014, 17:02
простые виджеты естественно быстрее в дизайнере спроектировать.
И там же в дизайнере проверить взаимодействие SizePolicy между элементами. Когда в одном лэйауте (особенно когда какой-нить виджет является контейнером или в сетке) собраны элементы с разным SizePolicy, то получаются достаточно неочевидные взаимовлияния на финальное расположение.


Название: Re: QLayout
Отправлено: Firefox от Январь 23, 2014, 18:06
проблему я решила, прописав всем компонентам одинаковые настройки и размеры изначально, максимальные и минимальные тоже вручную.