2014-11-08 10 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

相關問題