ProjectExplorer: Prepare more flexibility to aspect layouting

This hides the explicit use of a QFormLayout from the aspect
interface in a new LayoutBuilder class. That currently works
only on a QFormLayout in the back, but opens the possibility
to use e.g. a QGridLayout as use on the Kits and some option
pages.

The aspects now only announce sub-widgets they like to add,
actuall positioning is does by a new LayoutBuilder class,
also cramming several widgets in an hbox in the right column
of the QFormLayout is done there.

Change-Id: I2b788192c465f2ab82261849d34e514697c5a491
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-10-15 17:20:51 +02:00
parent 02350520c2
commit 6eaf239777
20 changed files with 251 additions and 140 deletions

View File

@@ -248,13 +248,14 @@ QString RunConfiguration::disabledReason() const
QWidget *RunConfiguration::createConfigurationWidget()
{
auto widget = new QWidget;
auto formLayout = new QFormLayout(widget);
formLayout->setContentsMargins(0, 0, 0, 0);
formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
for (ProjectConfigurationAspect *aspect : m_aspects) {
if (aspect->isVisible())
aspect->addToConfigurationLayout(formLayout);
{
LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : m_aspects) {
if (aspect->isVisible()) {
builder.startNewRow();
aspect->addToLayout(builder);
}
}
}
Core::VariableChooser::addSupportForChildWidgets(widget, macroExpander());