Qml调用插件

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

#include <QQmlApplicationEngine>
#include <QtCore/qglobal.h>

#if defined(QTDLL_LIBRARY)
#  define QTDLLSHARED_EXPORT Q_DECL_EXPORT
#else
#  define QTDLLSHARED_EXPORT Q_DECL_IMPORT
#endif

class 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";
    }
show.gif

需要完整代码请访问QtQuickExamples

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容