Utils: Avoid intermediate widgets when using LayoutBuilder

In most cases, the layout constructed in the builder was set
on a widget which in turn was put into a vbox in the actual
widget. This is not necessary, but needs some re-ordering.

Also make sure that using not-yet-parented widgets during
layout construction does not cause visible artifacts.

Change-Id: I75727a571da093d3131ea6fba467c2c646cdb6f1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-03-11 19:02:42 +01:00
parent 4151f091e3
commit 035a6ff031
25 changed files with 401 additions and 365 deletions

View File

@@ -185,10 +185,11 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
});
auto initialCMakeAspect = bc->aspect<InitialCMakeArgumentsAspect>();
auto aspectWidget = new QWidget;
LayoutBuilder aspectWidgetBuilder(aspectWidget);
Layouting::Form aspectWidgetBuilder;
buildDirAspect->addToLayout(aspectWidgetBuilder);
aspectWidgetBuilder.finishRow();
initialCMakeAspect->addToLayout(aspectWidgetBuilder);
aspectWidgetBuilder.attachTo(aspectWidget, false);
mainLayout->addWidget(aspectWidget, row, 0, 1, -1);
++row;
@@ -196,9 +197,9 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
connect(qmlDebugAspect, &QtSupport::QmlDebuggingAspect::changed, this, [this]() {
updateButtonState();
});
auto widget = new QWidget;
LayoutBuilder builder(widget);
Layouting::Form builder;
qmlDebugAspect->addToLayout(builder);
auto widget = builder.emerge();
mainLayout->addWidget(widget, row, 0, 1, -1);
++row;