diff options
-rw-r--r-- | src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp | 37 | ||||
-rw-r--r-- | src/corelib/kernel/qproperty.cpp | 37 |
2 files changed, 38 insertions, 36 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp index 3d63abe590..ae1d2202e7 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp @@ -160,3 +160,40 @@ int main() #include "main.moc" //! [4] + +//! [5] +class Client{}; + +class MyClassPrivate : public QObjectPrivate +{ +public: + QList<Client> clients; + bool hasClientsActualCalculation() const { return clients.size() > 0; } + Q_OBJECT_COMPUTED_PROPERTY(MyClassPrivate, bool, hasClientsData, + &MyClassPrivate::hasClientsActualCalculation) +}; + +class MyClass : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool hasClients READ hasClients STORED false BINDABLE bindableHasClients) +public: + QBindable<bool> bindableHasClients() + { + return QBindable<bool>(&d_func()->hasClientsData); + } + bool hasClients() const + { + return d_func()->hasClientsData.value(); + } + void addClient(const Client &c) + { + Q_D(MyClass); + d->clients.push_back(c); + // notify that the value could have changed + d->hasClientsData.markDirty(); + } +private: + Q_DECLARE_PRIVATE(MyClass) +}; +//! [5] diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index c985943498..f9df135d9c 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -1565,42 +1565,7 @@ QString QPropertyBindingError::description() const See the following example. - \code - class Client{}; - - class MyClassPrivate : public QObjectPrivate - { - public: - QList<Client> clients; - bool hasClientsActualCalculation() const { return clients.size() > 0; } - Q_OBJECT_COMPUTED_PROPERTY(MyClassPrivate, bool, hasClientsData, - &MyClassPrivate::hasClientsActualCalculation) - }; - - class MyClass : public QObject - { - // add q-object macro here (confuses qdoc if we do it here) - Q_PROPERTY(bool hasClients READ hasClients STORED false BINDABLE bindableHasClients) - public: - QBindable<bool> bindableHasClients() - { - return QBindable<bool>(&d_func()->hasClientsData); - } - bool hasClients() const - { - return d_func()->hasClientsData.value(); - } - void addClient(const Client &c) - { - Q_D(MyClass); - d->clients.push_back(c); - // notify that the value could have changed - d->hasClientsData.markDirty(); - } - private: - Q_DECLARE_PRIVATE(MyClass) - }; - \endcode + \snippet code/src_corelib_kernel_qproperty.cpp 5 The rules for getters in \l {Bindable Property Getters and Setters} also apply for QObjectComputedProperty. Especially, the getter |