summaryrefslogtreecommitdiff
path: root/src/plugins/debugger
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-10-15 17:20:51 +0200
committerhjk <hjk@qt.io>2019-10-18 12:24:39 +0000
commit6eaf239777a3166f2504b0dff90bb4afcacba89f (patch)
tree32a2ffa2028e3ba487d62b380e40aab866c1e39f /src/plugins/debugger
parent02350520c211bf5aa4f2804c1d19d28d710daa20 (diff)
downloadqt-creator-6eaf239777a3166f2504b0dff90bb4afcacba89f.tar.gz
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>
Diffstat (limited to 'src/plugins/debugger')
-rw-r--r--src/plugins/debugger/debuggerrunconfigurationaspect.cpp37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
index b7a6c697cf..a8deb29347 100644
--- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
+++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
@@ -62,7 +62,7 @@ class DebuggerLanguageAspect : public ProjectConfigurationAspect
public:
DebuggerLanguageAspect() = default;
- void addToConfigurationLayout(QFormLayout *layout) override;
+ void addToLayout(LayoutBuilder &builder) override;
bool value() const;
void setValue(bool val);
@@ -91,35 +91,29 @@ public:
std::function<void(bool)> m_clickCallBack;
};
-void DebuggerLanguageAspect::addToConfigurationLayout(QFormLayout *layout)
+void DebuggerLanguageAspect::addToLayout(LayoutBuilder &builder)
{
QTC_CHECK(!m_checkBox);
- m_checkBox = new QCheckBox(m_label, layout->parentWidget());
+ m_checkBox = new QCheckBox(m_label);
m_checkBox->setChecked(m_value);
QTC_CHECK(m_clickCallBack);
connect(m_checkBox, &QAbstractButton::clicked, this, m_clickCallBack, Qt::QueuedConnection);
- auto innerLayout = new QHBoxLayout;
- innerLayout->setContentsMargins(0, 0, 0, 0);
-
connect(m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
m_value = m_checkBox->isChecked() ? EnabledLanguage : DisabledLanguage;
emit changed();
});
- innerLayout->addWidget(m_checkBox);
+ builder.addItem(m_checkBox.data());
if (!m_infoLabelText.isEmpty()) {
QTC_CHECK(!m_infoLabel);
- m_infoLabel = new QLabel(m_infoLabelText, layout->parentWidget());
+ m_infoLabel = new QLabel(m_infoLabelText);
connect(m_infoLabel, &QLabel::linkActivated, [](const QString &link) {
Core::HelpManager::showHelpUrl(link);
});
- innerLayout->addWidget(m_infoLabel);
+ builder.addItem(m_infoLabel.data());
}
-
- innerLayout->addStretch();
- layout->addRow(innerLayout);
}
void DebuggerLanguageAspect::setAutoSettingsKey(const QString &settingsKey)
@@ -172,18 +166,19 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(Target *target)
setConfigWidgetCreator([this] {
QWidget *w = new QWidget;
- auto layout = new QFormLayout;
- layout->setContentsMargins(0, 0, 0, 0);
-
- m_cppAspect->addToConfigurationLayout(layout);
- m_qmlAspect->addToConfigurationLayout(layout);
- m_overrideStartupAspect->addToConfigurationLayout(layout);
+ LayoutBuilder builder(w);
+ m_cppAspect->addToLayout(builder);
+ builder.startNewRow();
+ m_qmlAspect->addToLayout(builder);
+ builder.startNewRow();
+ m_overrideStartupAspect->addToLayout(builder);
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
- if (env.toInt())
- m_multiProcessAspect->addToConfigurationLayout(layout);
+ if (env.toInt()) {
+ builder.startNewRow();
+ m_multiProcessAspect->addToLayout(builder);
+ }
- w->setLayout(layout);
return w;
});