En esta página

QProperty Class

template <typename T> class QProperty

La clase QProperty es una clase de plantilla que permite la vinculación automática de propiedades. Más...

Cabecera: #include <QProperty>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Desde: Qt 6.0
Hereda: QPropertyData

Esta clase es igual-comparable.

Esta clase es comparable con T.

Funciones Públicas

QProperty()
QProperty(Functor &&f)
QProperty(T &&initialValue)
QProperty(const QPropertyBinding<T> &binding)
QProperty(const T &initialValue)
~QProperty()
(since 6.2) QPropertyNotifier addNotifier(Functor f)
QPropertyBinding<T> binding() const
QPropertyChangeHandler<Functor> onValueChanged(Functor f)
QPropertyBinding<T> setBinding(const QPropertyBinding<T> &newBinding)
(since 6.0) QPropertyBinding<T> setBinding(Functor f)
bool setBinding(const QUntypedPropertyBinding &newBinding)
void setValue(QProperty<T>::parameter_type newValue)
void setValue(QProperty<T>::rvalue_ref newValue)
(since 6.0) QPropertyChangeHandler<Functor> subscribe(Functor f)
QPropertyBinding<T> takeBinding()
QProperty<T>::parameter_type value() const
QProperty<T> &operator=(QProperty<T>::parameter_type newValue)
QProperty<T> &operator=(QProperty<T>::rvalue_ref newValue)
(since 6.2) void beginPropertyUpdateGroup()
(since 6.2) void endPropertyUpdateGroup()

Descripción Detallada

QProperty<T> es una de las clases que implementan Qt Bindable Properties. Es un contenedor que contiene una instancia de T. Se le puede asignar un valor y se puede leer mediante la función value() o el operador de conversión T. También puedes vincular la propiedad a una expresión que calcula el valor dinámicamente, la expresión vinculante. Se representa como una lambda de C++ y se puede utilizar para expresar relaciones entre distintas propiedades de la aplicación.

Nota: Para QML, es importante exponer QProperty en Q_PROPERTY con la palabra clave BINDABLE. Como resultado, el motor QML la utiliza como interfaz vinculable para establecer la vinculación de propiedades. A su vez, el enlace puede interactuar con C++ a través de la API normal: QProperty<T>::onValueChanged, QProperty::takeBinding y QBindable::hasBinding Si la propiedad es BINDABLE, el motor utilizará el seguimiento de cambios inherente al sistema de propiedades de C++ para recibir notificaciones sobre cambios, y no dependerá de que se emitan señales.

Documentación de las funciones miembro

QProperty::QProperty()

Construye una propiedad con una instancia de T construida por defecto.

[explicit] template <typename Functor> QProperty::QProperty(Functor &&f)

Crea una propiedad vinculada a la expresión de vinculación proporcionada f. El valor de la propiedad se establece con el resultado de la evaluación de la nueva vinculación. Cada vez que cambie una dependencia de la vinculación, ésta se volverá a evaluar y el valor de la propiedad se actualizará en consecuencia.

[explicit default] QProperty::QProperty(T &&initialValue)

Move-Construye una propiedad con la dirección initialValue.

[explicit] QProperty::QProperty(const QPropertyBinding<T> &binding)

Crea una propiedad vinculada a la expresión binding proporcionada. El valor de la propiedad se establece en el resultado de la evaluación del nuevo enlace. Cada vez que cambie una dependencia de la vinculación, ésta se volverá a evaluar y el valor de la propiedad se actualizará en consecuencia.

[explicit default] QProperty::QProperty(const T &initialValue)

Construye una propiedad con la dirección initialValue.

QProperty::~QProperty()

Destruye la propiedad.

[since 6.2] template <typename Functor> QPropertyNotifier QProperty::addNotifier(Functor f)

Suscribe el functor dado f como una llamada de retorno que se llama cada vez que cambia el valor de la propiedad.

Se espera que la llamada de retorno f sea de un tipo que tenga un operador de llamada simple () sin ningún parámetro. Esto significa que puedes proporcionar una expresión lambda de C++, una función std::function o incluso una estructura personalizada con un operador de llamada.

El objeto manejador de cambio de propiedad devuelto mantiene un seguimiento de la suscripción. Cuando sale del ámbito, la llamada de retorno se desuscribe.

Este método es en algunos casos más fácil de usar que onValueChanged(), ya que el objeto devuelto no es una plantilla. Por lo tanto, puede almacenarse más fácilmente, por ejemplo, como miembro de una clase.

Esta función se introdujo en Qt 6.2.

Véase también onValueChanged() y subscribe().

QPropertyBinding<T> QProperty::binding() const

Devuelve la expresión de vinculación que está asociada a esta propiedad. Se devolverá un QPropertyBinding<T> construido por defecto si no existe tal asociación.

Véase también setBinding().

template <typename Functor> QPropertyChangeHandler<Functor> QProperty::onValueChanged(Functor f)

Registra el functor dado f como una llamada de retorno que será llamada cada vez que cambie el valor de la propiedad. En cada cambio de valor, el manejador es llamado inmediatamente, o diferido, dependiendo del contexto.

Se espera que la llamada de retorno f sea de un tipo que tenga un operador de llamada simple () sin ningún parámetro. Esto significa que puedes proporcionar una expresión lambda de C++, una función std::function o incluso una estructura personalizada con un operador de llamada.

El objeto manejador de cambio de propiedad devuelto mantiene el registro. Cuando sale del ámbito, la llamada de retorno se desregistra.

QPropertyBinding<T> QProperty::setBinding(const QPropertyBinding<T> &newBinding)

Asocia el valor de esta propiedad con la expresión newBinding proporcionada y devuelve el enlace asociado previamente. El valor de la propiedad se establece en el resultado de la evaluación del nuevo enlace. Cada vez que cambie una dependencia de la vinculación, ésta se volverá a evaluar y el valor de la propiedad se actualizará en consecuencia.

Véase también binding().

[since 6.0] template <typename Functor> QPropertyBinding<T> QProperty::setBinding(Functor f)

Asocia el valor de esta propiedad con el functor proporcionado f y devuelve la vinculación previamente asociada. El valor de la propiedad se establece en el resultado de la evaluación de la nueva vinculación. Cada vez que cambie una dependencia de la vinculación, ésta se volverá a evaluar y el valor de la propiedad se actualizará en consecuencia.

Se trata de una función sobrecargada.

Esta función se introdujo en Qt 6.0.

Véase también Formulación de un enlace de propiedad.

bool QProperty::setBinding(const QUntypedPropertyBinding &newBinding)

Asocia el valor de esta propiedad con la expresión newBinding proporcionada. El valor de la propiedad se establece con el resultado de la evaluación del nuevo enlace. Cada vez que cambie una dependencia de la vinculación, ésta se volverá a evaluar y el valor de la propiedad se actualizará en consecuencia.

Devuelve true si el tipo de esta propiedad es el mismo que el que devuelve la función de vinculación; false en caso contrario.

Se trata de una función sobrecargada.

void QProperty::setValue(QProperty<T>::rvalue_ref newValue)

void QProperty::setValue(QProperty<T>::parameter_type newValue)

Asigna newValue a esta propiedad y elimina el enlace asociado a la propiedad, si está presente.

[since 6.0] template <typename Functor> QPropertyChangeHandler<Functor> QProperty::subscribe(Functor f)

Suscribe el functor dado f como una llamada de retorno que se llama inmediatamente y siempre que el valor de la propiedad cambie en el futuro. En cada cambio de valor, el manejador es llamado inmediatamente, o diferido, dependiendo del contexto.

Se espera que la llamada de retorno f sea de un tipo que se pueda copiar y que tenga un operador de llamada simple() sin ningún parámetro. Esto significa que puede proporcionar una expresión lambda de C++, una función std::function o incluso una estructura personalizada con un operador de llamada.

El objeto manejador de cambio de propiedad devuelto mantiene el seguimiento de la suscripción. Cuando sale del ámbito, se cancela la suscripción a la llamada de retorno.

Esta función se introdujo en Qt 6.0.

QPropertyBinding<T> QProperty::takeBinding()

Disocia la expresión de vinculación de esta propiedad y la devuelve. Después de llamar a esta función, el valor de la propiedad sólo cambiará si se le asigna un nuevo valor, o cuando se establezca un nuevo enlace.

QProperty<T>::parameter_type QProperty::value() const

Devuelve el valor de la propiedad. Puede evaluar una expresión vinculante ligada a esta propiedad antes de devolver el valor.

Véase también setValue().

QProperty<T> &QProperty::operator=(QProperty<T>::rvalue_ref newValue)

QProperty<T> &QProperty::operator=(QProperty<T>::parameter_type newValue)

Asigna newValue a esta propiedad y devuelve una referencia a esta QProperty.

No miembros relacionados

[since 6.2] void beginPropertyUpdateGroup()

Marca el inicio de un grupo de actualización de propiedades. Dentro de este grupo, el cambio de una propiedad no actualiza inmediatamente ninguna propiedad dependiente ni activa notificaciones de cambio. Éstas se aplazan hasta que se finaliza el grupo mediante una llamada a endPropertyUpdateGroup.

Los grupos pueden estar anidados. En ese caso, el aplazamiento sólo finaliza una vez finalizado el grupo más externo.

Nota: Las notificaciones de cambio sólo se envían después de que todos los valores de las propiedades afectadas por el grupo se hayan actualizado a sus nuevos valores. Esto permite restablecer una invariante de la clase si es necesario actualizar múltiples propiedades, evitando que cualquier observador externo advierta un estado inconsistente.

Esta función se introdujo en Qt 6.2.

Véase también Qt::endPropertyUpdateGroup y QScopedPropertyUpdateGroup.

[since 6.2] void endPropertyUpdateGroup()

Finaliza un grupo de actualización de propiedades. Si se ha finalizado el grupo más externo, y las evaluaciones y notificaciones de vinculación diferida ocurren ahora.

Advertencia: Llamar a endPropertyUpdateGroup sin una llamada precedente a beginPropertyUpdateGroup resulta en un comportamiento indefinido.

Esta función se introdujo en Qt 6.2.

Véase también Qt::beginPropertyUpdateGroup y QScopedPropertyUpdateGroup.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.