summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qproperty.h4
-rw-r--r--tests/auto/corelib/kernel/qproperty/tst_qproperty.cpp5
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);