在 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 中将布局移动到另一个布局的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌套线性布局中将按钮与屏幕底部对齐[重复]

如何在Unity的水平布局中将特定的孩子放在前面

QT5.4 删除和删除布局中的小部件

将视图从一个布局动画到另一个布局

如何将约束布局包含到另一个约束布局并在每个约束布局之间设置约束

qt5---布局