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

8yparm6h  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(131)

我正在寻找一个超级简单的例子,似乎找不到。我有一个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);

字符串

mrphzbgm

mrphzbgm1#

“缺乏示例”的原因是你想错了。你所描述的一直都在做,通过 * 每一个使用布局的Qt示例 *!我是认真的。当你向布局添加一个小部件时,它 * 并不重要 *。“现在”添加小部件和“以后”添加小部件没有什么神奇之处。
只要想想这个问题的标题:它没有任何意义。所有的小部件都必须添加到已经存在的布局中!根据定义,如果没有布局,你怎么能添加小部件呢?
你的代码是错误的,仅此而已。在一个由布局管理的小部件上设置几何形状总是毫无意义的。一旦你将它添加到布局中,布局就会改变几何形状。
因为你在布局中添加了一个空的小部件,你很可能看不到它。这就是为什么标签会显示出来-它不是一个空的小部件。
如果你想要一个固定大小的小部件,为了更容易被注意到,只要设置它的固定大小就可以了。更好的是,把它变成红色,这样它就能脱颖而出。

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

字符串

相关问题