Missing property
This warning category is spelled [missing-property] by qmllint.
Can't assign to non-existent default property
What happened?
You assigned an object to a non-existing default property.
Why is this bad?
The QML engine can't assign this object at runtime.
Example
To fix this warning, specify the property you want to bind to or, if you are the author of the type, mark a property as default:
import QtQuick
Item {
component MyType: QtObject { property Item myItem; }
MyType {
myItem: Item {}
}
component AlternativeMyType: QtObject { default property Item myItem; }
AlternativeMyType {
Item {} // bound to myItem via default property
}
}Property does not exist
What happened?
You assigned an expression to a non-existing property.
Why is this bad?
The QML engine can't assign this expression at runtime.
Example
To fix this warning, remove the binding or correct a possible typo:
Member not found on type
What happened?
You accessed a member in a field member expression that can't be found by QML tooling. A field member expression is an expression of the form someId.someProperty.
The member might not exist at all, for example when you made a typo. Or it might exist at runtime (because it exists on a specific sub-type that is always present), but not on the statically declared type.
Why is this bad?
The QML tooling can't find this member, meaning that features like go-to-definition and autocomplete won't work. At runtime, there might be an error or you might get an incorrect result if the member really does not exist. There won't be an error if the member actually always exist at runtime, however in that case there can still be a performance cost due to missed optimizations.
Example
Property does not actually exist
To fix this warning, remove the binding or correct a possible typo:
Property exists, but type is not precise enough
import QtQuick
import QtQuick.Controls.Basic
Item {
component Message : Item {
required property string sender
required property string text
}
ListView {
id: messageView
delegate: Message {}
}
Button {
text: "Reply to %1".arg(messageView.currentItem.sender) // not ok
}
}To fix this warning, cast the object you read from to the more specific type:
import QtQuick
import QtQuick.Controls.Basic
Item {
component Message : Item {
required property string sender
required property string text
}
ListView {
id: messageView
delegate: Message {}
}
Button {
text: "Reply to %1".arg((messageView.currentItem as Message).sender) // now ok
}
}In the example, the declared type of messageView's currentItem property is Item, which has no sender property: sender is defined only in Message. Here, we know however that currentItem always contains a Message, so we can cast currentItem to Message using a type assertion.
© 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.