在我做出更改之前,我有几个单独的小部件来自QWidget
:
Wid* a = new Wid;
Wid* b = new Wid;
a->show();
b->show();
他们按预期显示。 但现在我想在其中一个布局中将它们显示在第三个小部件中。
Container* container = new Container(); // custom QWidget
我说:
container->addLabel(a);
我将小部件添加到Container内的垂直布局vBox
:
void Container::addLabel(Label* lab){
this->labelList.append(lab);
vBox.addWidget(lab);
}
问题:小部件a
突然隐藏,并且未显示在Container内。为了测试,我尝试了addWidget(new QLabel("Check"));
。我不明白,我在这里做错了什么......
EDIT1: 在Container中,这是我设置布局的方式:
this->setLayout(&mainbox_);
mainbox_.addLayout(&buttonBox_);
mainbox_.addLayout(&vbox_);
// Test if the layout works: The QLabel is shown correctly.
QLabel* check = new QLabel;
check->setText("Dieser Text ist im Layout 'vbox_'.");
vbox_.addWidget(check);
在添加a
之前,其大小为QSize(650, 279)
。
添加后,即使我调用QSize(0, 0)
,其大小也会为show()
。
EDIT2:
解决。它与ui文件中的大小限制有关。我将顶级小部件的约束从固定更改为首选和voilà。