2014-01-24 55 views
1

我正在寻找一个超级简单的例子,似乎无法找到一个。我有一个MainWindow。当按钮被按下时,我想创建一个新窗口,在MainWindow的布局中打开,成为主窗口的一部分。如何将小部件添加到预先存在的QLayout?

我有一个设置时按下一个按钮来调用这个槽......当它被调用的代码我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); 

回答

1

的理由“缺乏例子“是,你认为它是错的。您所描述的内容始终是由每个使用布局的Qt示例完成的!我是认真的。当您将小部件添加到布局时,它并不重要。 “现在”添加小工具与“稍后”添加小工具没什么不可思议的。

想想这个问题的标题:它使没有意义。所有小部件必须添加到已存在的布局中! 按照定义,不能少于。如果没有布局,你怎么可以添加一个小部件?

你的代码是错的,就是这样。在由布局管理的小部件上设置几何图形始终毫无意义。只要将它添加到布局中,布局就会更改几何。

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

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

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