Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用QT QML C++;插件在另一个应用程序中?_Qt_Dll_Plugins_Qml - Fatal编程技术网

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

如何使用QT QML C++;插件在另一个应用程序中?,qt,dll,plugins,qml,Qt,Dll,Plugins,Qml,我正试图对QML插件了如指掌,我希望有人能给我解释一下,因为我似乎遗漏了一些东西 因此,我已经着手创建了一个QtQuick2扩展插件。我有一个简单的源文件,我已经对QQmlExtensionPlugin类进行了子类化,并用qmlRegisterType注册了新类型。我已经建立了这个项目,它给了我一个DLL(我在Windows7上,使用Qt5.13)。 据我所知,我现在应该能够获取此DLL和qmldir文件并放入一个新项目,并且应该能够从通过qmldir文件公开的DLL加载QML 不幸的是,当我这

我正试图对QML插件了如指掌,我希望有人能给我解释一下,因为我似乎遗漏了一些东西

因此,我已经着手创建了一个QtQuick2扩展插件。我有一个简单的源文件,我已经对QQmlExtensionPlugin类进行了子类化,并用qmlRegisterType注册了新类型。我已经建立了这个项目,它给了我一个DLL(我在Windows7上,使用Qt5.13)。 据我所知,我现在应该能够获取此DLL和qmldir文件并放入一个新项目,并且应该能够从通过qmldir文件公开的DLL加载QML

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


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

您似乎缺少根

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

或者更常见的做法,使用

注意,您应该总是使用模块(命名空间)导入< /COD>导入C++插件模块:

import My.CppModule 1.0

使用<代码>目录导入< /COD>导入C++插件模块是一个<强>未定义行为>:

import "My/CppModule" // Might fail

就这样,我将我的DLL和qmldir文件复制到QML导入路径位置,一切正常。谢谢现在我想知道是否可以添加一个不同的QML导入路径位置,这样就不必将DLL复制到QT应用程序文件夹中。
import "My/CppModule" // Might fail