0

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

然而,一些插件需要不能通过 QML 提供的功能,例如写入文件。我如何使我的用户能够随心所欲地扩展功能?

4

1 回答 1

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++ 编写的。这是一些示例源代码:

于 2014-11-09T00:44:46.940 回答