未找到 QML 模块错误

Con*_*tor 5 qt-creator qml

使用 QtCreator 时,我在编辑器中显示一个 qml 文件。qml 文件用于名为main.qml插件的文件。

然后我点击Design按钮。它显示错误消息:QML module not found

如果我获取Go to error链接,它会转到包含以下内容的行import com.name.os.app.all 1.0。这是插件所需的各种组件 qml 文件的位置。

我已将路径添加c:\users\me\ui\viewer\到我的QML_IMPORT_PATH env变量中。如果 QtCreater 将com.name...来自qml文件的 import 语句附加到我添加到的路径名中QML_IMPORT_PATH,它将找到所需的目录。它没有。

该项目使用qmake。

我曾尝试使用为我的主 qml 视图容器文件qmlplugindump.exe生成一个qmltypes文件,但qmlplugindump.exe给我一个错误,说component is not readyfile::///c:/Users/name/ui/viewer/modules/app/qml/com/name/os/app/all/typelist.qml:2:1 module MyViewContainer.qml is not installed.

我使用的命令是 qmlplugindump.exe MyViewContainer.qml 1.0 c:\users\myname\ui\viewer\modules\app\qml\com\name\os\app\all\ > ...

Mor*_*Mag 7

这个错误毁了我的生活“QML 模块未找到错误”的
真正解决方案
: 假设您在这样的目录中有插件,其中包含 qmldir, "myproject/modules/mymodule/blabla.qmldir"
您需要在“.pro”文件中导入像这样的父目录:

QML_IMPORT_PATH += $$PWD/modules
Run Code Online (Sandbox Code Playgroud)

不是这样的(这个不行): //---------------------------------------------------- -------- 旁注: 这也会发生在 qml 的其他部分,例如qmlplugindump,您需要提供父目录而不是确切的文件夹!但Windeployqt正在使用确切的文件夹
QML_IMPORT_PATH += $$PWD/modules/mymodule


例如:

qmlplugindump lib 1.0 C:\Users\Administrator\Documents\projectName\3rdparty > C:\Users\Administrator\Documents\projectName\3rdparty\lib\lib.qmltypes
Run Code Online (Sandbox Code Playgroud)

//--------------------------------------------------------
第二个重要的部分是Qt Creator 中的QML 模拟层
,转到工具->选项->Qt Quick->Qt Quick Designer,
选择“使用使用所选 qt 构建的 Qml 模拟层
(如果已选择),请查看“顶层”下的文本框构建路径”
它应该引用 Qt 版本 bin 目录,该目录应该与插件 Qt 版本相同:

..\5.12.1\msvc2017\bin    
Run Code Online (Sandbox Code Playgroud)

对我来说它:(它应该与您用于套件和 blabla 的版本相同)

C:\QtN\5.12.1\msvc2017\bin  
Run Code Online (Sandbox Code Playgroud)

它不应该是这样的:

C:\Users\Administrator\AppData\Roaming\QtProject\qtcreator\qmlpuppet 
Run Code Online (Sandbox Code Playgroud)


在插件中添加新项目后不要忘记部署(cmd 命令):

windeployqt --qmldir C:\Users\Administrator\Documents\projectName C:\Users\Administrator\Documents\build-projectName-5_12-Debug\debug
Run Code Online (Sandbox Code Playgroud)

和插件转储:

qmlplugindump lib 1.0 C:\Users\Administrator\Documents\projectName\3rdparty > C:\Users\Administrator\Documents\projectName\3rdparty\lib\lib.qmltypes  
Run Code Online (Sandbox Code Playgroud)

在此之后,如果 QtCreator 在插件中给出新对象的错误,您需要重新启动 QtCreator 就是这样!

如果仍然存在问题,您需要 - 清理所有 - 运行 Qmake - 重建所有,这可以解决很多问题。在某些情况下,您需要将 qml 文件放入5.13.1\msvc2017\qml或适合您的 qt 版本的任何文件中


小智 1

您完全测试过这个插件吗?我问这个问题是因为我编写了很多插件并且多次遇到这个问题。可能的问题包括您正在使用的 Qt 版本,以及插件 uri / 类名中某种形式的命名错误。

我有一个为多个版本的 Qt 构建的应用程序,并且 qmlplugindump 工具似乎具有不同级别的有效性。

很抱歉说得这么笼统,但希望它能为您指明正确的方向。