【问题标题】:Custom QML module not found未找到自定义 QML 模块
【发布时间】:2025-12-24 21:20:15
【问题描述】:

我有一个 QML 应用程序。我创建了自己的 QML 模块。叫MyCustomModule。该模块具有相应的qmldir 文件,该文件已注册到相应的my_custom_module.qrc 文件中。我还在 C++ 中的应用程序启动时添加了带有 addImportPath("qrc:///my_custom_module"); 的导入路径。我使用的是 CMake 而不是 QMake。

我在哪里导入MyCustomModule QtCreator 告诉我QML module not found,但是当我构建应用程序时构建没有任何问题并运行。

我错过了什么吗?

【问题讨论】:

  • 你最好提供一些源代码而不是解释它。
  • 我认为在这种情况下,源代码只是一个死胡同,只会转移人们对真正问题的注意力。正如我所说,代码很好,因为它可以构建和运行。另一方面,我找到了将其添加为答案的解决方案。

标签: qt qml qt5


【解决方案1】:

我的问题是我的 CMake 文件中缺少 QML_IMPORT_PATH。示例:

# Make Qt Creator aware of where the QML modules live
set (_QML_IMPORT_PATHS "")

## Add new module paths here.
list (APPEND _QML_IMPORT_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/path/to/your/module)

set (
    QML_IMPORT_PATH
    ${_QML_IMPORT_PATHS}
    CACHE
    STRING
    "Path used to locate CMake modules by Qt Creator"
    FORCE
)

一个重要的附注是${CMAKE_CURRENT_SOURCE_DIR}/path/to/your/module 应该指向模块所在的文件夹,而不是模块文件夹本身。因此,如果您有这样的路径: /path/to/your/module/MyCustomModule,CMake 应该包含路径 /path/to/your/module

【讨论】:

  • 对于在 CMake 生成文件中设置 QML_IMPORT_PATH 的改进方法,see here