如何将小部件添加到预先存在的 QLayout

问题描述 投票:0回答:1

我正在寻找一个超级简单的例子,但似乎找不到。我有一个

MainWindow
。当按下按钮时,我想创建一个新窗口,该窗口在
MainWindow
的布局中打开,成为其中的一部分。

我有当按下按钮来调用此插槽时设置的代码;当它被调用时,我的 QLabel 出现,但我的 QWidget 没有:

QWidget *test = new QWidget();
test->setGeometry(QRect(100,100,100,100));
layout->addWidget(test,0,0)

//Operation Mode
QLabel *operationalModeLabel1 = new QLabel("TEST");
layout->addWidget(operationalModeLabel1,2,1);
c++ qt qwidget qlayout
1个回答
2
投票

之所以“缺乏例子”,是因为你想错了。您所描述的内容一直是由每个使用布局的 Qt 示例完成的!我是认真的。当您将小部件添加到布局中时,这没关系。 “现在”添加小部件与“稍后”添加它们没有什么神奇之处。

想想问题的标题:它“毫无意义”。所有小部件都必须添加到已经存在的布局中!

根据定义,不少于。如果没有布局,你怎么能添加一个小部件呢? 你的代码是错误的,仅此而已。在要由布局管理的小部件上设置几何图形总是毫无意义的。一旦将其添加到布局中,布局就会改变几何形状。

由于您要在布局中添加一个空小部件,因此您很可能看不到它。这就是标签出现的原因 - 它不是一个空的小部件。

如果你想要一个固定大小的小部件,为了更容易被注意到,只需在其上设置固定大小即可。更好的是,将其设为红色,以便脱颖而出。

QWidget * test = new QWidget(); test->setStyleSheet("QWidget { background-color: red }"); test->setFixedSize(100, 100); layout->addWidget(test, 0, 0);


© www.soinside.com 2019 - 2024. All rights reserved.