使用 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 ready和file::///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\ > ...
这个错误毁了我的生活“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 工具似乎具有不同级别的有效性。
很抱歉说得这么笼统,但希望它能为您指明正确的方向。
| 归档时间: |
|
| 查看次数: |
25899 次 |
| 最近记录: |