summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-05-12 10:09:52 +0200
committerhjk <hjk@qt.io>2023-05-17 05:51:30 +0000
commita21b96f4b6bc252c20824c0d807583df4b905f49 (patch)
treef5fa20610c53f56f27057e310dcc57091d245fab /src
parent337497d990bbfb52f27b5ba7019cdd0fb9c6d5fe (diff)
downloadqt-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.cpp16
-rw-r--r--src/libs/utils/aspects.h2
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);