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 |
|