如何在Qt5中从插件加载QML文件

时间:2018-01-25 18:03:16

标签: c++ plugins qml qt5

我正在尝试为我的应用开发插件模型。这个想法很简单:

  1. 我有一个所有插件都可以实现的界面。
  2. 在我的应用程序中,我有一个特殊区域,其中插件将显示UI。
  3. 对于主应用程序中的第2步,我可以使用Qml Loader组件加载外部QML文件。所以main.qml看起来像这样:

    Rectangle {
      width: 500
      height: 500
      Loader {
        id: loader
        source: ???
      }
    }
    

    我使用QPluginLoader从c ++加载插件,我的插件界面如下所示:

    class ExtensionInterface:public QObject {
        Q_OBJECT
        public:
          virtual ~ExtensionInterface() {}
          virtual QString getVersion() = 0;
          virtual QQmlComponent* getComponent() = 0;
    };
    

    那么如何从插件中获取.qml文件并将其放入Loader中?

    更新: 我在插件资源中添加了.qml。现在插件看起来像这样:Plugin structure

    要创建新的QQmlComponent,我需要qml引擎和qml文件的路径。我知道如何将引擎传递给插件,但我应该使用什么路径?来自插件的功能:

    QQmlComponent* getComponent(){
      QQmlComponent* component = new QQmlComponent(m_QmlEngine, "???");
      return component
    }
    

0 个答案:

没有答案