diff options
-rw-r--r-- | src/corelib/kernel/qproperty.h | 4 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index 946014dc6d..a533f424e8 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -630,7 +630,7 @@ public: QPropertyBinding<T> setBinding(const QPropertyBinding<T> &binding) { Q_ASSERT(!iface || binding.isNull() || binding.valueMetaType() == iface->metaType()); - return iface ? static_cast<QPropertyBinding<T> &&>(iface->setBinding(data, binding)) : QPropertyBinding<T>(); + return (iface && iface->setBinding) ? static_cast<QPropertyBinding<T> &&>(iface->setBinding(data, binding)) : QPropertyBinding<T>(); } #ifndef Q_CLANG_QDOC template <typename Functor> @@ -657,7 +657,7 @@ public: void setValue(const T &value) { - if (iface) + if (iface && iface->setter) iface->setter(data, &value); } }; diff --git a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp index 8145b066da..3cc7bd6f9c 100644 --- a/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp +++ b/tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp @@ -1114,6 +1114,11 @@ void tst_QProperty::testNewStuff() object.readData.setValue(111); QCOMPARE(object.computed(), 111); + object.bindableComputed().setBinding(object.bindableBar().makeBinding()); + QCOMPARE(object.computed(), 111); + object.bindableComputed().setValue(10); + QCOMPARE(object.computed(), 111); + QCOMPARE(object.bindableFoo().value(), 111); object.bindableFoo().setValue(24); QCOMPARE(object.foo(), 24); |