diff options
Diffstat (limited to 'src/corelib/doc/snippets/code')
-rw-r--r-- | src/corelib/doc/snippets/code/src_corelib_kernel_qproperty.cpp | 37 |
1 files changed, 37 insertions, 0 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] |