
一、插件原理基于抽象接口 动态库dll/so/dylib实现解耦扩展主程序只依赖接口不依赖具体实现。二、步骤 1定义统一抽象接口头文件cpp运行// plugininterface.h #ifndef PLUGININTERFACE_H #define PLUGININTERFACE_H #include QObject class PluginInterface { public: virtual ~PluginInterface() default; virtual QString getPluginName() 0; virtual void exec() 0; }; // Qt插件宏标记 #define PluginInterface_iid com.example.PluginInterface Q_DECLARE_INTERFACE(PluginInterface, PluginInterface_iid) #endif三、步骤 2编写插件工程动态库新建Library - Qt Plugin项目实现接口类并添加插件导出宏cpp运行#include plugininterface.h class DemoPlugin : public QObject, public PluginInterface { Q_OBJECT Q_PLUGIN_METADATA(IID PluginInterface_iid FILE plugin.json) Q_INTERFACES(PluginInterface) public: QString getPluginName() override { return 演示插件; } void exec() override { qDebug() 插件执行; } };3.编译生成对应平台插件库文件。四、步骤 3主程序动态加载插件cpp运行#include QPluginLoader QPluginLoader loader(demoplugin.dll); // Windows dll Linux so macOS dylib QObject* obj loader.instance(); if(obj) { PluginInterface* plugin qobject_castPluginInterface*(obj); if(plugin) { qDebug() plugin-getPluginName(); plugin-exec(); } }小结插件架构实现功能热插拔、模块解耦大型软件、模块化系统必备核心是抽象接口 Q_PLUGIN_METADATA宏。