Utils: Allow programmatically change of IntegerAspect

Using setValue() on an IntegerAspect only had a visual effect
if it happened before adding it to a layout.
If the aspect had been added already the value silently got
changed (internally) but this was never reflected on the
respective SpinBox.

Change-Id: I60297d9d38835842b3b02a36787c0a2001477427
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2022-07-06 21:41:21 +02:00
parent fe07f7962c
commit ae1e006426
2 changed files with 12 additions and 1 deletions

View File

@@ -1825,7 +1825,15 @@ qint64 IntegerAspect::value() const
void IntegerAspect::setValue(qint64 value) void IntegerAspect::setValue(qint64 value)
{ {
BaseAspect::setValue(value); if (BaseAspect::setValueQuietly(value)) {
if (d->m_spinBox)
d->m_spinBox->setValue(value);
//qDebug() << "SetValue: Changing" << labelText() << " to " << value;
emit changed();
//QTC_CHECK(!labelText().isEmpty());
emit valueChanged(value);
//qDebug() << "SetValue: Changed" << labelText() << " to " << value;
}
} }
void IntegerAspect::setRange(qint64 min, qint64 max) void IntegerAspect::setRange(qint64 min, qint64 max)

View File

@@ -448,6 +448,9 @@ public:
struct Data : BaseAspect::Data { qint64 value = 0; }; struct Data : BaseAspect::Data { qint64 value = 0; };
signals:
void valueChanged(int newValue);
private: private:
std::unique_ptr<Internal::IntegerAspectPrivate> d; std::unique_ptr<Internal::IntegerAspectPrivate> d;
}; };