如何在QT中将动态窗口小部件添加到窗口小部件的布局中

时间:2015-06-24 20:35:34

标签: c++ qt layout

我想要做的是动态地在窗口小部件的布局中添加窗口小部件:

my_widget->layout()->addWidget(another_widget);

但遗憾的是layout()方法是一个访问者。

另一种方法是使用MainWindow的ui变量

ui->my_widget_layout->addWidget(another_widget);

让我可以直接访问小部件的布局。 还有另一种方法吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

layout()成为访问者有什么问题?有用!它返回QLayout *,您可以添加其他小部件。如果父级已经可见,请确保show()这些小部件。

如果您认为更具体的布局在特定布局中有用,您也可以投射布局:

auto grid = qobject_cast<QGridLayout*>(parent->layout());
if (grid)
  // Add in the second column
  grid->addWidget(widget, grid->rowCount(), 1);
else
  parent->layout()->addWidget(widget);
widget->show();