2014-11-08 9 views
0

我有一个小应用程序,用户可以创建自己的插件作为QML文件。 这些插件会在某些事件发生时收到通知,并且它们的用户界面将逐个显示在TabView中。用户将如何在基于QML的插件系统中添加额外的功能?

然而,一些插件需要通过QML无法提供的功能,如写入文件。 我如何让我的用户可以随意扩展功能?

回答

1

您的用户必须:

  1. 实现C++一个QObject提供所需的功能。
  2. 子类QQmlExtensionPlugin将QObject注册为QML类型。
  3. 为#1和#2构建DLL(或SO或DYLIB),并编写qmldir文件来告诉QML引擎如何加载DLL。

编辑: Qt Creator的自动有点这个过程中你的。转到“文件” - >“新文件或项目...” - >“项目” - >“库” - >“Qt Quick 2扩展插件”

您可以在文档:

注1:您的用户将不被写* .qml文件。

注2:每个插件必须位于其自己的子文件夹中。这是因为每个C++插件需要一个qmldir文件,但在同一个文件夹中不能有多个qmldir文件。

你可以在你的Qt安装中找到一些真实的例子。转到C:\ Qt \ 5.3 \ mingw482_32 \ qml - 这里的所有子文件夹都包含QML插件,主要用C++编写。下面是一些示例源代码:为的BluetoothSocket QML类型

+0

感谢您的准确的答案。这对我帮助很大。 只有一个关于导入路径的问题。所有的用户插件在一个名为plugins的文件夹中都有自己的目录。我怎样才能一次导入它们? – Hedge 2014-11-10 09:56:25

+0

查看QQmlEngine文档:http://qt-project.org/doc/qt-5/qqmlengine.html寻找像'importPlugin()'和'pluginPathList()这样的函数' – JKSH 2014-11-15 03:10:42

相关问题