
1. 创建接口头文件,Q_DECLARE_INTERFACE,定义接口#ifndef PLUGINONEINTERFACE_H #define PLUGINONEINTERFACE_H #include QWidget // 组织域名产品名版本号 #define PluginOneInterfaceIID baidu.com.PluginOneInterface/1.0 class PluginOneInterface { public: virtual ~PluginOneInterface() default; virtual QWidget* getWidget() 0; }; Q_DECLARE_INTERFACE(PluginOneInterface,PluginOneInterfaceIID) #endif // PLUGINONEINTERFACE_H2. 编写插件类,继承接口类class PLUGINONE_EXPORT PluginOne:public QObject ,public PluginOneInterface { Q_OBJECT Q_PLUGIN_METADATA(IID PluginOneInterfaceIID FILE PluginOne.json) Q_INTERFACES(PluginOneInterface) public: PluginOne(); ~PluginOne(); QWidget * getWidget() override; private: QWidget * mWidget{nullptr}; };3. 主项目加载插件4. 获取插件中元数据Q_PLUGIN_METADATA的json数据QJsonObject meta loader.metaData(); QJsonObject metaData meta.value(MetaData).toObject(); QString version metaData.value(version).toString(); QString name metaData.value(name).toString();