Qml调用插件

来源:互联网 发布:股票数据api 编辑:程序博客网 时间:2024/06/07 02:07

创建一个带Qml窗体的动态库, 接口文件如下:

#include <QQmlApplicationEngine>#include <QtCore/qglobal.h>#if defined(QTDLL_LIBRARY)#  define QTDLLSHARED_EXPORT Q_DECL_EXPORT#else#  define QTDLLSHARED_EXPORT Q_DECL_IMPORT#endifclass QTDLLSHARED_EXPORT QmlPlugin{public:    void ShowWindow();private:    QQmlApplicationEngine engine;};extern "C" QTDLLSHARED_EXPORT void ShowWindowApp();

通过调用接口来加载和显示qml文件

void QmlPlugin::ShowWindow(){    engine.load(QUrl(QLatin1String("qrc:/QmlPlugin.qml")));}void ShowWindowApp(){    QmlPlugin *pp = new QmlPlugin;    pp->ShowWindow();}

调用方加载和调用插件中的接口函数:
注意dll的路径

    typedef void(*FUN1)();    QLibrary lib(QCoreApplication::applicationDirPath() + "/plugins/QmlPlugin/QmlPlugin.dll");    if (lib.load())    {        FUN1 pShow = (FUN1)lib.resolve("ShowWindowApp");        if (pShow)        {            pShow();        }        else        {            qDebug() << "fun error";        }    }    else    {        qDebug() << "load error";    }

这里写图片描述

需要完整代码请访问QtQuickExamples