gpt4 book ai didi

qt - 如何在另一个应用程序中使用 QT QML C++ 插件?

转载 作者:行者123 更新时间:2023-12-03 07:36:11 25 4
gpt4 key购买 nike

我正在尝试了解 QML 插件,我希望有人可以向我解释一下,因为我似乎遗漏了一些东西。

所以我继续创建了一个 Qt Quick 2 扩展插件。我有一个简单的源文件,我对 QQmlExtensionPlugin 类进行了子类化,并使用 qmlRegisterType 注册了新类型。我已经构建了这个项目,它为我提供了一个 DLL(我使用的是 Windows 7,并使用 QT 5.13)。据我了解,我现在应该能够将此 DLL 和 qmldir 文件放入一个新项目中,并且我应该能够从通过 qmldir 文件公开的 DLL 加载 QML。

不幸的是,当我这样做时,它不起作用。我在网上看到的所有示例都显示了一个 qml 文件,该文件执行插件 qml 的导入,但每次我尝试这样做时,导入都不起作用,并给我一个“未找到 QML 模块”错误。

所以我的问题是:如何在另一个项目中实际使用 DLL 和 qmldir 文件将 DLL 中的 QML 公开到新项目?

最佳答案

看来您缺少根QML import path .

默认的根导入路径是%QTDIR%/qml,您只需将插件模块复制并粘贴到此文件夹中,以便QML引擎可以找到并加载它。

或者更常见的做法,使用 QQmlEngine::addImportPath()

QQmlEngine engine;
engine.addImportPath(qApp->applicationDirPath() + "/qml");

请注意,您应该始终使用模块(命名空间)导入来导入您的 C++ 插件模块:

import My.CppModule 1.0

使用目录导入导入C++插件模块目前是一种未定义行为:

import "My/CppModule" // Might fail

关于qt - 如何在另一个应用程序中使用 QT QML C++ 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com