MyPlugin.h头文件
#ifndef MYPLUGIN_H
#define MYPLUGIN_H
#include <QObject>
class MyPlugin : public QObject
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "com.example.MyPlugin" FILE "MyPlugin.json")
public:
explicit MyPlugin(QObject *parent = nullptr);
Q_INVOKABLE void doSomething();
private:
};
#endif // MYPLUGIN_H
MyPlugin.cpp内容
#include "myplugin.h"
#include <QDebug>
MyPlugin::MyPlugin(QObject *parent)
: QObject(parent)
{
}
void MyPlugin::doSomething()
{
qDebug()<<"MyPlugin::doSomething";
}
pro文件如下
QT += gui core
TEMPLATE = lib
CONFIG += plugin
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES +=
myplugin.cpp
HEADERS +=
myplugin.h
DISTFILES += MyPlugin.json
# Default rules for deployment.
!isEmpty(target.path): INSTALLS += target
QPluginLoader loader("E:/workspace_qt/future/MyPlugin.dll"); //替换为实际路径
QObject *plugin = loader.instance();
if (plugin) {
const QMetaObject *metaObject = plugin->metaObject();
// 获取插件的元数据信息
qDebug()<<metaObject->className();
qDebug()<<"methodcount="<<metaObject->methodCount();
for(int i=0;i < metaObject->methodCount();++i)
{
QMetaMethod curMethod = metaObject->method(i);
qDebug()<<curMethod.name();
}
metaObject->invokeMethod(plugin,"doSomething");
}
else
{
qDebug()<<"fail load MyPlugin";
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...