在 Qt5 中将布局移动到另一个布局
Posted
技术标签:
【中文标题】在 Qt5 中将布局移动到另一个布局【英文标题】:Move layout to another layout in Qt5 【发布时间】:2021-09-16 09:12:04 【问题描述】:我在 Qt5 中有一个自定义容器小部件,它有一个没有布局的 QFrame。我在 QFrame 上使用 setLayout 效果很好,但有时我想将包含小部件和其他布局的现有布局作为布局传输到该 QFrame。在 Qt5 中是否可以传输已经使用 addLayout 添加的布局?
【问题讨论】:
请提供minimal reproducible example 【参考方案1】:没问题。只需使用 setLayout() 使布局成为目标小部件的布局。包含的小部件将自动重新设置父级。
void MainWindow::moveLayout()
// Move the layout from ui->g0 to ui->g1 and vice versa
// every time you call moveLayout
static int toggle = 0;
QLayout* l;
QWidget* w;
if (toggle == 0)
l = ui->g0->layout();
w = ui->g1;
else
l = ui->g1->layout();
w = ui->g0;
if (w->layout())
// Hack to clean target widget
QWidget z;
z.setLayout(w->layout());
w->setLayout(l);
toggle = 1 - toggle;
【讨论】:
以上是关于在 Qt5 中将布局移动到另一个布局的主要内容,如果未能解决你的问题,请参考以下文章