我正在寻找一个超级简单的例子,但似乎找不到。我有一个
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);
之所以“缺乏例子”,是因为你想错了。您所描述的内容一直是由每个使用布局的 Qt 示例完成的!我是认真的。当您将小部件添加到布局中时,这没关系。 “现在”添加小部件与“稍后”添加它们没有什么神奇之处。
想想问题的标题:它“毫无意义”。所有小部件都必须添加到已经存在的布局中!根据定义,不少于。如果没有布局,你怎么能添加一个小部件呢? 你的代码是错误的,仅此而已。在要由布局管理的小部件上设置几何图形总是毫无意义的。一旦将其添加到布局中,布局就会改变几何形状。
由于您要在布局中添加一个空小部件,因此您很可能看不到它。这就是标签出现的原因 - 它不是一个空的小部件。如果你想要一个固定大小的小部件,为了更容易被注意到,只需在其上设置固定大小即可。更好的是,将其设为红色,以便脱颖而出。
QWidget * test = new QWidget();
test->setStyleSheet("QWidget { background-color: red }");
test->setFixedSize(100, 100);
layout->addWidget(test, 0, 0);