QBindable 类

template <typename T> class QBindable

QBindable 是围绕启用绑定特性的包裹器类。它允许类型安全操作,同时抽象出各种特性类之间的差异。 更多...

头: #include <QBindable>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承: QUntypedBindable

公共函数

QPropertyBinding<T> binding () const
QPropertyBinding<T> makeBinding (const QPropertyBindingSourceLocation & location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const
QPropertyBinding<T> setBinding (const QPropertyBinding<T> & binding )
QPropertyBinding<T> setBinding (Functor f )
void setValue (const T & value )
QPropertyBinding<T> takeBinding ()
T value () const

详细描述

QBindable<T> helps to integrate Qt's traditional Q_PROPERTY with binding-enabled properties. If a property is backed by a QProperty , QObjectBindableProperty or QObjectComputedProperty , you can add BINDABLE bindablePropertyName to the Q_PROPERTY declaration, where bindablePropertyName is a function returning an instance of QBindable constructed from the QProperty . The returned QBindable allows users of the property to set and query bindings of the property, without having to know the exact kind of binding-enabled property used.

class MyClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(int x READ x WRITE setX NOTIFY xChanged BINDABLE bindableX)
public:
    int x() const { return xProp; }
    void setX(int x) { xProp = x; }
    QBindable<int> bindableX() { return QBindable<int>(&xProp); }
signals:
    void xChanged();
private:
    // Declare the instance of the bindable property data.
    Q_OBJECT_BINDABLE_PROPERTY(MyClass, int, xProp, &MyClass::xChanged)
};
MyClass *myObject;
QBindable<int> bindableX = myObject->bindableX();
qDebug() << bindableX.hasBinding(); // prints false
QProperty<int> y {42};
bindableX.setBinding([&](){ return 2*y.value(); });
qDebug() << bindableX.hasBinding() << myObject->x(); // prints true 84
					

另请参阅 QMetaProperty::isBindable , QProperty ,和 QObjectBindableProperty .

成员函数文档编制

QPropertyBinding < T > QBindable:: binding () const

Returns the currently set binding of the underlying property. If the property does not have a binding, the returned QPropertyBinding<T> will be invalid.

另请参阅 setBinding and hasBinding .

QPropertyBinding < T > QBindable:: makeBinding (const QPropertyBindingSourceLocation & location = QT_PROPERTY_DEFAULT_BINDING_LOCATION) const

Constructs a binding evaluating to the underlying property's value, using a specified source location .

QPropertyBinding < T > QBindable:: setBinding (const QPropertyBinding < T > & binding )

Sets the underlying property's binding to binding . Does nothing if the QBindable 是只读或无效。

另请参阅 binding , isReadOnly (),和 isValid ().

template <typename Functor> QPropertyBinding < T > QBindable:: setBinding ( Functor f )

这是重载函数。

创建 QPropertyBinding<T> from f , and sets it as the underlying property's binding.

void QBindable:: setValue (const T & value )

Sets the underlying property's value to value . This removes any currenltly set binding from it. This function has no effect if the QBindable 是只读或无效。

另请参阅 value (), isValid (), isReadOnly (),和 setBinding ().

QPropertyBinding < T > QBindable:: takeBinding ()

Removes the currently set binding of the underlying property and returns it. If the property does not have a binding, the returned QPropertyBinding<T> will be invalid.

另请参阅 binding , setBinding ,和 hasBinding .

T QBindable:: value () const

Returns the underlying property's current value. If the QBindable is invalid, a default constructed T 被返回。

另请参阅 setValue () 和 isValid ().