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

How can i add dynamically widget into a widget's layout in QT

我想做的是在小部件的布局中动态添加一个小部件:

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

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

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

ui->my_widget_layout->addWidget(another_widget);

这让我可以直接访问小部件的布局。 还有其他方法吗?

谢谢。

layout() 作为访问者有什么问题?有用!它 returns 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();