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 .
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 .
Constructs a binding evaluating to the underlying property's value, using a specified source location .
Sets the underlying property's binding to binding . Does nothing if the QBindable 是只读或无效。
另请参阅 binding , isReadOnly (),和 isValid ().
这是重载函数。
创建
QPropertyBinding<T>
from
f
, and sets it as the underlying property's binding.
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 ().
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 .
Returns the underlying property's current value. If the
QBindable
is invalid, a default constructed
T
被返回。