查看完整版本: [-- zhengtianzuo系列-Qml调用插件 --]

QTCN开发网 -> Qt代码秀 -> zhengtianzuo系列-Qml调用插件 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zhengtianzuo 2017-10-17 11:28

zhengtianzuo系列-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";
    }
```



需要完整代码请访问 QtQuickExamples

big_mouse 2020-04-22 09:15


查看完整版本: [-- zhengtianzuo系列-Qml调用插件 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled