QML模块未找到错误

问题描述 投票:3回答:3

使用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将qml文件import语句中的com.name...附加到我添加到QML_IMPORT_PATH的路径名,它将找到所需的目录。它没有。

该项目使用qmake。

我已经尝试使用qmlplugindump.exe为我的主要qml视图容器文件生成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\ > ...

qt-creator qml
3个回答
2
投票

这个错误毁了我的生活 “QML模块未找到错误”的真正解决方案: 让我们说如果你在这样的目录中有插件,qmldir里面有"myproject/modules/mymodule/blabla.qmldir" 你需要在“.pro”文件中导入这样的父目录:

QML_IMPORT_PATH += $$PWD/modules

不喜欢这个(这个不会工作): QML_IMPORT_PATH += $$PWD/modules/mymodule // --------------------------------------------- 边注: 这将发生在qml的其他部分,就像qmlplugindump你需要给父目录不精确的文件夹!但windeployqt正在使用exact文件夹

例如:

qmlplugindump KiMa 1.0 C:\Users\Administrator\Documents\DynamicView\3rdparty > C:\Users\Administrator\Documents\DynamicView\3rdparty\KiMa\KiMa.qmltypes

// --------------------------------------------- 第二个最重要的部分是QML仿真层 在Qt Creator中转到tools-> option-> Qt Quick-> Qt Quick Designer 选择“使用使用所选qt构建的Qml仿真层” 如果已经选择了那个“顶级构建路径”下的文本框 它应该引用Qt版本bin目录,它应该与插件Qt版本相同:

..\5.12.1\msvc2017\bin    

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

C:\QtN\5.12.1\msvc2017\bin  

它不应该像这样:

C:\Users\Administrator\AppData\Roaming\QtProject\qtcreator\qmlpuppet 

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

windeployqt --qmldir C:\Users\Administrator\Documents\DynamicView C:\Users\Administrator\Documents\build-DynamicView-5_12-Debug\debug

和插件转储:

qmlplugindump KiMa 1.0 C:\Users\Administrator\Documents\DynamicView\3rdparty > C:\Users\Administrator\Documents\DynamicView\3rdparty\KiMa\KiMa.qmltypes  

在此之后,如果QtCreator为插件中的新对象提供错误,则需要重启QtCreator,这就是它!

如果仍然有问题你需要 - 全部清理 - 运行Qmake - 重建所有解决了这么多问题。


1
投票

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

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

很抱歉这么一般,但希望它指出你正确的方向。


1
投票

从QtCreator中,进行“项目清理”,然后重建。该模块将被找到。

我遇到了同样的问题,偶然发现了你的问题。经过一番努力,“清洁”和重建工作。

在构建过程中似乎存在“不完全依赖性检查”,以“理解”需要重建main.cpp,然后暴露qmlRegisterType<MyType>()以便可以在main.qml中找到它。

© www.soinside.com 2019 - 2024. All rights reserved.