我有一个小应用程序,用户可以在其中创建自己的插件作为 QML 文件。这些插件在某些事件时收到通知,并且它们的用户界面在 TabView 中一一显示。
然而,一些插件需要不能通过 QML 提供的功能,例如写入文件。我如何使我的用户能够随心所欲地扩展功能?
您的用户必须:
QQmlExtensionPlugin
将该 QObject 注册为 QML 类型的子类。qmldir
文件来告诉 QML 引擎如何加载 DLL。编辑: Qt Creator 会为您自动执行一些此过程。转到“文件”->“新建文件或项目...”->“项目”->“库”->“Qt Quick 2 扩展插件”
您可以在文档中找到有关此过程的更多详细信息:
注意 1:您的用户不会编写 *.qml 文件。
注意 2:每个插件必须在其自己的子文件夹中。这是因为每个 C++ 插件都需要一个qmldir
文件,但同一文件夹中不能有多个qmldir
文件。
你可以在你的 Qt 安装中找到一些真实的例子。比如说,C:\Qt\5.3\mingw482_32\qml——这里的所有子文件夹都包含 QML 插件,大部分是用 C++ 编写的。这是一些示例源代码: