vbox.addWidget(小部件)不显示小部件

时间:2015-07-13 13:10:20

标签: c++ qt

在我做出更改之前,我有几个单独的小部件来自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à。

0 个答案:

没有答案