过期属性已读
此警告类别由 qmllint 拼写[stale-property-read] 。
读取非常数和不可注属性
发生了什么?
绑定中使用了一个既非常数又不可通知的属性。
为什么会这样?
常量属性的值永远不会改变。可通知属性会在值发生变化时通知绑定,以便绑定可以重新评估。
由于该属性既不是常量属性,也不是可通知属性,因此它可能在程序执行过程中发生变化,而不会通知依赖的绑定。这将使绑定处于潜在的过时状态,因为它们的值取决于该属性。
示例
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... } }
要修复此警告,要么将不会改变值的属性标记为常量,要么将其设置为可通知属性。
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.