将布局移动到 Qt5 中的另一个布局
Move layout to another layout in Qt5
我在 Qt5 中有一个自定义容器小部件,它有一个没有布局的 QFrame。我在 QFrame 上使用 setLayout 效果很好,但有时我想将包含小部件和其他布局的现有布局传输到该 QFrame 作为布局。在 Qt5 中甚至可以传输已经使用 addLayout 添加的布局吗?
没问题。只需使用 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 中有一个自定义容器小部件,它有一个没有布局的 QFrame。我在 QFrame 上使用 setLayout 效果很好,但有时我想将包含小部件和其他布局的现有布局传输到该 QFrame 作为布局。在 Qt5 中甚至可以传输已经使用 addLayout 添加的布局吗?
没问题。只需使用 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;
}