本页内容

未解析的类型

qmllint 将此警告类别拼写为[unresolved-type] 。

该类别包含以下警告:

  • 使用了类型但未解析
  • 未找到方法返回类型的类型
  • 方法中参数的类型未找到
  • 属性类型不完整;您可能遗漏了导入语句
  • 未找到属性的类型;这很可能是由于缺少依赖项条目,或者类型未通过声明方式公开所致
  • 属性类型未完全解析;这很可能是由于缺少依赖项条目或类型未通过声明方式公开所致
  • 在命名空间中未找到类型

这些警告通常表示导入缺失或 QML 模块存在错误,具体取决于您是正在使用还是编写 QML 模块。

对于 QML 模块用户

发生了什么?

您使用了一个 QML 工具无法找到的类型。这通常表明可能存在拼写错误、缺少导入,或者导入路径设置不正确。

这有什么问题?

QML 工具无法找到该类型,而且 QML 引擎很可能也无法找到它。

示例

拼写错误

import QtQuick

Itme { ... } // misspelling of Item

要解决此警告,请更正拼写错误:

import QtQuick

Item { ... }

缺少导入语句

Item { ... }

要解决此警告,请导入提供 `Item` 的模块:

import QtQuick

Item { ... }

如果添加导入语句后问题仍未解决,请检查您的导入路径。

如果您通过QML Language Server 收到此警告,您的配置可能不完整。

致 QML 模块作者

发生了什么?

QML 工具无法在您的 QML 模块中找到某个类型。该类型可能是您直接或间接(通过将其用作以下形式)向 QML 公开的:

  • 基类
  • 属性类型
  • 信号、槽或Q_INVOKABLE 参数类型
  • Q_INVOKABLE 返回类型

如果该未解析类型是由您的模块公开的,则可能是您遗漏了声明式类型注册。

否则,您的 QML 模块可能对暴露该未解析类型的 QML 模块存在未声明的依赖关系。

这为什么不好?

QML 工具将无法处理您的类型,而您的 QML 模块的用户会收到无法修复的虚假警告。

示例

缺少类型注册

请参阅《从 C++ 定义 QML 类型》,了解如何以声明式方式注册您的类型。请确保所有直接或间接向 QML 公开的类型和枚举都已注册。

缺少 QML 模块依赖

假设MyItem 是您 QML 模块中的一个 C++ 类型:

class MyItem: public QQuickItem {
    ...
    QML_ELEMENT
    ...
    Q_PROPERTY(SomeType someProperty READ someProperty WRITE setSomeProperty NOTIFY somePropertyChanged)
    ...
}

如果 QML 工具无法先解析QQuickItem 或SomeType ,则无法正确解析MyItem 。如果QQuickItem 位于QtQuick QML 模块中,而SomeType 位于SomeModule 中,则需要在 QML 模块定义中声明这些 C++ 依赖项。

要实现这一点,请在 QML 模块定义中添加这些依赖关系。可以使用 `DEPENDENCIES` 实现,例如:

qt_add_qml_module(
    ...
    DEPENDENCIES
        QtQuick # for QQuickItem to be resolved
        SomeModule # for SomeType to be resolved
)

有关更多信息,请参阅《在 QML 模块之间声明 C++ 依赖项》。

© 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.