Propiedad antigua leída
Esta categoría de advertencia se escribe [stale-property-read] por qmllint.
Lectura de propiedad no constante y no notificable
¿Qué ha ocurrido?
Se ha utilizado una propiedad no constante y no notificable en un enlace.
¿Por qué es malo?
Las propiedades constantes nunca cambian de valor. Las propiedades notific ables notifican a los enlaces que dependen de ellas cuando cambian de valor, de modo que los enlaces pueden reevaluarlas.
Dado que esta propiedad no es ni constante ni notificable, podría cambiar durante la ejecución del programa sin notificar a los enlaces dependientes. Esto dejaría a los enlaces en un estado potencialmente obsoleto, ya que su valor depende de la propiedad.
Ejemplo
class Circle : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY(double radius READ radius WRITE setRadius FINAL) public: double radius() const { return m_radius; } void setRadius(double radius) { m_radius = radius; } private: double m_radius = 1; };
import QtQuick Item { Circle { id: circle property double area: Math.PI * radius * radius } Component.onCompleted: { console.log(circle.area) // 3.14159... circle.radius = 2 console.log(circle.area) // 3.14159... } }
Para solucionar esta advertencia, marque la propiedad como constante si no va a cambiar de valor o hágala notificable.
class Circle : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY(double radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL) public: double radius() const { return m_radius; } void setRadius(double radius) { if (radius != m_radius) { m_radius = radius; emit radiusChanged(); } } signals: void radiusChanged(); private: double m_radius = 1; };
© 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.