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

@@ -442,8 +442,6 @@ QString CMakeBuildStep::activeRunConfigTarget() const
QWidget *CMakeBuildStep::createConfigWidget()
{
auto widget = new QWidget;
auto updateDetails = [this] {
ProcessParameters param;
setupProcessParameters(&param);
@@ -453,10 +451,6 @@ QWidget *CMakeBuildStep::createConfigWidget()
setDisplayName(tr("Build", "ConfigWidget display name."));
LayoutBuilder builder(widget);
builder.addRow(m_cmakeArguments);
builder.addRow(m_toolArguments);
auto buildTargetsView = new QTreeView;
buildTargetsView->setMinimumHeight(200);
buildTargetsView->setModel(&m_buildTargetModel);
@@ -466,7 +460,11 @@ QWidget *CMakeBuildStep::createConfigWidget()
auto frame = ItemViewFind::createSearchableWrapper(buildTargetsView,
ItemViewFind::LightColored);
Layouting::Form builder;
builder.addRow(m_cmakeArguments);
builder.addRow(m_toolArguments);
builder.addRow({new QLabel(tr("Targets:")), frame});
auto widget = builder.emerge();
updateDetails();