用户如何在基于QML的插件系统中添加额外的功能?

时间:2014-11-08 19:35:47

标签: c++ qml qt5.3

我有一个小应用程序,用户可以在其中创建自己的插件作为QML文件。 这些插件在某些事件时会收到通知,并且它们的用户界面会在TabView中逐个显示。

然而,某些插件需要能够通过QML提供的功能,例如写入文件。 如何让我的用户随意扩展功能?

1 个答案:

答案 0 :(得分:1)

您的用户必须:

  1. 在C ++中实现提供所需功能的QObject。
  2. 子类QQmlExtensionPlugin将QObject注册为QML类型。
  3. 为#1和#2构建DLL(或SO或DYLIB),并写一个qmldir文件告诉QML引擎如何加载DLL。
  4. 编辑: Qt Creator为您自动完成此过程。转到"文件" - > "新文件或项目......" - > "项目" - > "库" - > " Qt Quick 2 Extension Plugin"

    您可以在文档中找到有关此过程的更多详细信息:

    注1:您的用户不会写一个* .qml文件。

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

    您可以在Qt安装中找到一些真实示例。转到,比方说,C:\ Qt \ 5.3 \ mingw482_32 \ qml - 这里的所有子文件夹都包含QML插件,大多数是用C ++编写的。以下是一些示例源代码: