QProperty 类
模板 <typename T> class QPropertyQProperty 类是一个模板类,它能够启用自动属性绑定。 更多...
头文件 | #include <QProperty> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
自 | Qt 6.0 |
继承 | QPropertyData |
公共函数
QProperty() | |
QProperty(const QPropertyBinding<T> &binding) | |
QProperty(Functor &&f) | |
QProperty(const T &initialValue) | |
QProperty(T &&initialValue) | |
~QProperty() | |
QPropertyNotifier | addNotifier(Functor f) |
QPropertyBinding<T> | binding() const |
QPropertyChangeHandler<Functor> | onValueChanged(Functor f) |
QPropertyBinding<T> | setBinding(const QPropertyBinding<T> &newBinding) |
bool | setBinding(const QUntypedPropertyBinding &newBinding) |
QPropertyBinding<T> | setBinding(Functor f) |
void | setValue(QProperty<T>::rvalue_ref newValue) |
void | setValue(QProperty<T>::parameter_type newValue) |
QPropertyChangeHandler<Functor> | subscribe(Functor f) |
QPropertyBinding<T> | takeBinding() |
QProperty<T>::parameter_type | value() const |
QProperty<T> & | operator=(QProperty<T>::rvalue_ref newValue) |
QProperty<T> & | operator=(QProperty<T>::parameter_type newValue) |
相关非成员
(since 6.2) void | beginPropertyUpdateGroup() |
(since 6.2) void | endPropertyUpdateGroup() |
详细描述
QProperty<T> 是实现 Qt 可绑定属性 的类之一。它是一个容器,用于存储 T 类型的实例。你可以为其赋值,并通过 value() 函数或 T 转换操作符读取它。你还可以将属性绑定到一个计算值的表达式上,称为绑定表达式。它用 C++ lambda 表达式表示,可以用来表达应用程序中不同属性之间的关系。
注意:对于QML,将QProperty以Q_PROPERTY的方式暴露,并使用BINDABLE关键字是非常重要的。结果,QML引擎将其用作可绑定接口来设置属性绑定。反过来,绑定可以通过标准API与C++进行交互:QProperty
成员函数文档
void QProperty::setValue(QProperty<T>::parameter_type newValue)
void QProperty::setValue(QProperty<T>::rvalue_ref newValue)
将newValue赋值给此属性,如果存在将删除属性的相关绑定。
QProperty<T> &QProperty::operator=(QProperty<T>::parameter_type newValue)
QProperty<T> &QProperty::operator=(QProperty<T>::rvalue_ref newValue)
将newValue赋值给此属性,并返回对此QProperty的引用。
QProperty::QProperty()
使用T的默认构造函数构造属性。
[显式]
QProperty::QProperty(const QPropertyBinding<T> &binding)
构造一个与提供的binding表达式相关的属性。属性的值设置为评估新绑定后的结果。当绑定的依赖项发生变化时,将重新评估绑定,并相应更新属性的值。
[显式]
template <typename Functor> QProperty::QProperty(Functor &&f)
构造一个与提供的绑定表达式f相关的属性。属性的值设置为评估新绑定后的结果。当绑定依赖项发生变化时,将重新评估绑定,并相应更新属性的值。
[显式默认]
QProperty::QProperty(const T &initialValue)
使用提供的initialValue构造属性。
[显式默认]
QProperty::QProperty(T &&initialValue)
移动构造函数,使用提供的initialValue构造属性。
QProperty::~QProperty()
销毁属性。
template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)
将给定的函数 f 订阅为一个回调,每当属性值变化时都会调用它。
期望回调 f 是一种具有纯调用操作符 ()
且不带任何参数的类型。这意味着您可以提供 C++ 的 lambda 表达式,std::function 或自定义具有调用操作符的结构体。
返回的属性变化处理对象跟踪订阅。当其超出作用域时,回调将取消订阅。
在某些情况下,此方法比 onValueChanged() 更易于使用,因为返回的对象不是模板。因此,它更容易被存储,例如作为类的成员。
另请参阅onValueChanged() 和 subscribe()。
QPropertyBinding<T> QProperty::binding() const
返回与此属性关联的绑定表达式。如果没有此类关联,则返回由默认构造的 QPropertyBinding<T>。
另请参阅setBinding()。
template <typename Functor> QPropertyChangeHandler<Functor> QProperty::onValueChanged(Functor f)
注册给定的函数 f 作为每当属性值变化时将调用的回调。在每次值变化时,处理程序要么立即调用,要么根据上下文延迟调用。
期望回调 f 是一种具有纯调用操作符 ()
且不带任何参数的类型。这意味着您可以提供 C++ 的 lambda 表达式,std::function 或自定义具有调用操作符的结构体。
返回的属性变化处理对象跟踪注册。当其超出作用域时,回调将取消注册。
QPropertyBinding<T> QProperty::setBinding(const QPropertyBinding<T> &newBinding)
将此属性的值与提供的 newBinding 表达式关联,并返回先前关联的绑定。属性的值设置为评估新绑定后的结果。每当绑定的依赖项发生变化时,绑定将重新评估,并相应地更新属性的值。
另请参阅binding()。
bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)
这是一个重载函数。
将此属性的值与提供的 newBinding 表达式关联。属性的值设置为评估新绑定后的结果。每当绑定的依赖项发生变化时,绑定将重新评估,并相应地更新属性的值。
如果此属性的类型与绑定函数返回的类型相同,则返回 true;否则返回 false。
template <typename Functor> QPropertyBinding<T> QProperty::setBinding(Functor f)
这是一个重载函数。
将此属性的值与提供的函数 f 关联,并返回先前关联的绑定。属性的值设置为评估新绑定后的结果。每当绑定的依赖项发生变化时,绑定将重新评估,并相应地更新属性的值。
另请参阅定义属性绑定。
template <typename Functor> QPropertyChangeHandler<Functor> QProperty::subscribe(Functor f)
将给定的二元运算符f作为回调立即调用,并在未来属性值变化时也进行调用。每次值变化时,处理程序要么立即调用,要么根据上下文进行延迟。
预期的回调f应为一个可复制类型,拥有一个不带任何参数的纯call()操作符。这意味着您可以提供一个C++ lambda表达式、std::function或者一个带call操作符的自定义结构。
返回的属性变化处理对象跟踪订阅。当其超出作用域时,回调将取消订阅。
QPropertyBinding<T> QProperty::takeBinding()
将绑定表达式从该属性中解绑并返回。调用此函数后,属性值的变化仅限于您为它分配新值或设置新的绑定。
QProperty<T>::parameter_type QProperty::value() const
返回属性值。在返回值之前,可能会计算与属性绑定的绑定表达式。
另请参阅setValue()。
相关非成员
[自6.2起]
void beginPropertyUpdateGroup()
标记属性更新组的开始。在此组内,更改属性既不立即更新任何依赖属性,也不触发更改通知。这些都是在通过调用endPropertyUpdateGroup结束组后才会延迟处理的。
组可以是嵌套的。在这种情况下,延迟只在最外层组被结束后才结束。
注意:只有在组内受影响的属性值都更新到新值之后,才会发送更改通知。这允许在需要更新多个属性时重新建立类的不变性,防止任何外部观察者注意到不一致的状态。
此功能是在Qt 6.2中引入的。
另请参阅Qt::endPropertyUpdateGroup和QScopedPropertyUpdateGroup。
[自6.2起]
void endPropertyUpdateGroup()
结束属性更新组。如果最外层组已结束,则现在将执行延迟的绑定评估和通知。
警告:在没有先调用beginPropertyUpdateGroup之前调用endPropertyUpdateGroup会导致未定义的行为。
此功能是在Qt 6.2中引入的。
另请参阅Qt::beginPropertyUpdateGroup和QScopedPropertyUpdateGroup。
© 2024 Qt公司有限公司。在此包含的文档贡献的版权归其各自的所有者。在此提供的文档是根据由自由软件基金会发布的GNU自由文档许可第1.3版的条款授权的。Qt及其 respective 标志是芬兰以及/或全球其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。