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

Pet*_*ter 0 c++ layout qt

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

my_widget->layout()->addWidget(another_widget);
Run Code Online (Sandbox Code Playgroud)

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

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

ui->my_widget_layout->addWidget(another_widget);
Run Code Online (Sandbox Code Playgroud)

这使我可以直接访问小部件的布局。还有另一种方法可以做到这一点吗?

谢谢。

Rei*_*ica 6

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();
Run Code Online (Sandbox Code Playgroud)