Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: booomer от Май 07, 2007, 23:39



Название: [qt-3.3.3]QLayout
Отправлено: booomer от Май 07, 2007, 23:39
Попробовал поработать с Layout'ами. Для примера перекатал код из хелпа...Все заработал как сказано.Попытался свое сделать:

Код:


QVBoxLayout *Layout1= new QVBoxLayout;
Layout1->addWidget(label2);
Layout1->addWidget(edit1);
Layout1->setMargin(15);
Layout1->setSpacing(1);
QVBoxLayout *Layout2= new QVBoxLayout;
Layout2->addWidget(label3);
Layout2->addWidget(edit2);
Layout2->setMargin(30);
Layout2->setSpacing(1);
QVBoxLayout *Layout4 = new QVBoxLayout;
Layout->addWidget(label1);
family = new QComboBox(this);
family->insertItem("sdf",0);
family->insertItem("fds",1);
Layout4->addWidget(family);
QHBoxLayout *leftLayout = new QHBoxLayout;
leftLayout->addLayout(Layout4);
leftLayout->addLayout(Layout1);
leftLayout->addWidget(checkbox1);
leftLayout->addLayout(ipaddrLayout2);
leftLayout->setSpacing(1);
QHBoxLayout *rightLayout= new QHBoxLayout;
rightLayout->addWidget(button1);
rightLayout->addWidget(button2);
rightLayout->addStretch(1);
QVBoxLayout *mainlayout= new QVBoxLayout;
mainlayout->addLayout(leftLayout);
mainlayout->addLayout(rightLayout);
mainlayout->setSpacing(1);


При запускепоказывается только первый инциализированный layout, т.е. в данном случае Layout1, и то, без label1. Пробовал переставлять и менять и, вроде, все пробовал...Подскажите как сделать так, чтобы все layoutы были видны по схеме:
mainlayout{leftlayout{Layout1,     rightlayout{button1,
                                 Layout2,                      button2}  
                                 checkbox,
                                 Layout4}                                      }


Название: [qt-3.3.3]QLayout
Отправлено: Muller от Май 08, 2007, 10:54
Пропиши parent при создании каждого layout и widget.
Например, QVBoxLayout *Layout1= new QVBoxLayout(this).


Название: Re: [qt-3.3.3]QLayout
Отправлено: pastor от Май 08, 2007, 10:58
Возможно это из-за того, что не задан парент для mainlayout. Попробуй так:

Код:
....
QVBoxLayout *mainlayout= new QVBoxLayout(this);
....


Название: [qt-3.3.3]QLayout
Отправлено: booomer от Май 08, 2007, 14:52
Ох...сам нашел, через часок поисков =) Спасибо всем....