Veraltetes Eigenschafts-Lesezugriff
Diese Warnkategorie wird von qmllint als „ [stale-property-read] “ bezeichnet.
Auslesen einer nicht konstanten und nicht meldepflichtigen Eigenschaft
Was ist passiert?
In einer Bindung wird eine Eigenschaft verwendet, die sowohl nicht konstant als auch nicht meldbar ist.
Warum ist das schlecht?
Konstante Eigenschaften ändern ihren Wert niemals. Benachrichtigbare Eigenschaften benachrichtigen die von ihnen abhängigen Bindungen, wenn sich ihr Wert ändert, damit die Bindungen neu ausgewertet werden können.
Da diese Eigenschaft weder konstant noch meldbar ist, könnte sie sich während der Programmausführung ändern, ohne dass abhängige Bindungen benachrichtigt werden. Dies würde dazu führen, dass die Bindungen in einem potenziell veralteten Zustand verbleiben, da ihr Wert von der Eigenschaft abhängt.
Beispiel
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...
}
}Um diese Warnung zu beheben, kennzeichnen Sie die Eigenschaft entweder als konstant, wenn sich ihr Wert nicht ändert, oder machen Sie sie benachrichtigbar.
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.