• 2771阅读
  • 1回复

zhengtianzuo系列-Qml调用插件 [复制链接]

上一主题 下一主题
离线zhengtianzuo
 

只看楼主 倒序阅读 楼主  发表于: 2017-10-17
创建一个带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";
    }
```



需要完整代码请访问 QtQuickExamples
博客地址: https://blog.csdn.net/zhengtianzuo06
Github: https://github.com/zhengtianzuo
个人产品: https://github.com/zhengtianzuo/Silk
产品网站: http://www.camelstudio.cn
离线big_mouse

只看该作者 1楼 发表于: 2020-04-22
快速回复
限100 字节
 
上一个 下一个