diff options
author | hjk <hjk@qt.io> | 2023-05-12 10:09:52 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-05-17 05:51:30 +0000 |
commit | a21b96f4b6bc252c20824c0d807583df4b905f49 (patch) | |
tree | f5fa20610c53f56f27057e310dcc57091d245fab /src | |
parent | 337497d990bbfb52f27b5ba7019cdd0fb9c6d5fe (diff) | |
download | qt-creator-a21b96f4b6bc252c20824c0d807583df4b905f49.tar.gz |
Utils: Allow a BoolAspect to adopt an external button
This will be used by the apply machinery and allows more
complex setups than the automatically generated internal
CheckBox button.
Change-Id: I237a9283253f11bcb76e0366a0b6c5a0346fdfd8
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/utils/aspects.cpp | 16 | ||||
-rw-r--r-- | src/libs/utils/aspects.h | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 541b258c0b..549a394273 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -587,6 +587,7 @@ public: BoolAspect::LabelPlacement m_labelPlacement = BoolAspect::LabelPlacement::AtCheckBox; QPointer<QAbstractButton> m_button; // Owned by configuration widget QPointer<QGroupBox> m_groupBox; // For BoolAspects handling GroupBox check boxes + bool m_buttonIsAdopted = false; }; class ColorAspectPrivate @@ -1446,8 +1447,10 @@ BoolAspect::~BoolAspect() = default; */ void BoolAspect::addToLayout(Layouting::LayoutItem &parent) { - QTC_CHECK(!d->m_button); - d->m_button = createSubWidget<QCheckBox>(); + if (!d->m_buttonIsAdopted) { + QTC_CHECK(!d->m_button); + d->m_button = createSubWidget<QCheckBox>(); + } switch (d->m_labelPlacement) { case LabelPlacement::AtCheckBoxWithoutDummyLabel: d->m_button->setText(labelText()); @@ -1474,6 +1477,15 @@ void BoolAspect::addToLayout(Layouting::LayoutItem &parent) this, &BoolAspect::volatileValueChanged); } +void BoolAspect::adoptButton(QAbstractButton *button) +{ + QTC_ASSERT(button, return); + QTC_CHECK(!d->m_button); + d->m_button = button; + d->m_buttonIsAdopted = true; + registerSubWidget(button); +} + std::function<void (QObject *)> BoolAspect::groupChecker() { return [this](QObject *target) { diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index 1a2570ea83..f6a35fa4ef 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -240,6 +240,8 @@ public: LabelPlacement labelPlacement = LabelPlacement::InExtraLabel); void setLabelPlacement(LabelPlacement labelPlacement); + void adoptButton(QAbstractButton *button); + signals: void valueChanged(bool newValue); void volatileValueChanged(bool newValue); |