Unresolved type
This category contains following warnings:
- Type is used but is not resolved
- Type was not found for the return type of method
- Type was not found for the type of parameter in method
- Property has incomplete type; You may be missing an import
- Type of property not found; This is likely due to a missing dependency entry or a type not being exposed declaratively
- Type of property not fully resolved; This is likely due to a missing dependency entry or a type not being exposed declaratively
- Type not found in namespace
These warnings usually indicate missing imports or faulty QML modules, depending on whether you are using or writing a QML module.
This warning category is spelled c{[unresolved-type]} by qmllint.
For QML module users
What happened?
You used a type that was not found by QML tooling. It usually indicates a potential typo, a missing import, or improperly set up import paths.
Why is this bad?
The type can't be found by QML tooling, and most likely not by the QML engine.
Examples
Typo
import QtQuick Itme { ... }
To fix this warning, correct the typo:
import QtQuick Item { ... }
Missing import statement
Item { ... }
To fix this warning, import the module that exposes Item
:
import QtQuick Item { ... }
If adding the import statement does not help, take a look at your qtqml-syntax-imports.html#qml-import-path.
If you get this warning via QML Language Server, your setup might be incomplete.
For QML module authors
What happened?
The QML tooling can't find a type in your QML module. It can be a type that you expose to QML directly or indirectly by using it as a:
- Base type
- Property type
- Signal, slot, or
Q_INVOKABLE
parameter type Q_INVOKABLE
return type
You might be missing a declarative type registration if the unresolved type is exposed by your module.
Otherwise, your QML module might have undeclared dependencies to the QML module exposing the unresolved type.
Why is this bad?
The QML tooling will not work on your types and users of your QML module will get spurious warnings that they can't fix.
Examples
Missing type registration
Refer to Defining QML Types from C++ on how to register your types declaratively. Make sure that all types and enums exposed directly and indirectly to QML are registered.
Missing QML module dependency
Let MyItem
be a C++ type in your QML module:
class MyItem: public QQuickItem { ... QML_ELEMENT ... Q_PROPERTY(SomeType someProperty READ someProperty WRITE setSomeProperty NOTIFY somePropertyChanged) ... }
The QML tooling can't resolve MyItem
correctly if it can't resolve QQuickItem
or SomeType
first. If QQuickItem
lives in the QtQuick
QML module and SomeType
in SomeModule
, then you need to state these C++ dependencies in the QML module definition.
To achieve that, add the dependencies to the QML module definition. This can be done with DEPENDENCIES
, for example:
qt_add_qml_module( ... DEPENDENCIES QtQuick # for QQuickItem to be resolved SomeModule # for SomeType to be resolved )
Refer to declaring C++ dependencies between QML modules for more information.
© 2024 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.