系列索引:CTK框架入门教程索引
本文使用CTK框架实现插件加载,流程图为
flowchart LR
A(launcher) --> B[Plugin A]
A --> C[Plugin B]
B --> D[Plugin Activator]
C --> E[Plugin Activator]
插件库
创建工程
打开Qt Creator,新建一个空qmake/dll工程,命名为testPlugin

设置pro配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| QT += core QT -= gui
TARGET = testPlugin TEMPLATE = lib CONFIG += plugin
win32:{ INCLUDEPATH += \ D:\CTK-2023.07.13\Libs\Core \ D:\CTK-2023.07.13\Libs\PluginFramework \ D:\CTK-2023.07.13\build\CTK-build\Libs\PluginFramework \ D:\CTK-2023.07.13\build\CTK-build\Libs\Core }
unix:{ INCLUDEPATH += \ /home/jackey/Downloads/CTK-2023.07.13/Libs/Core \ /home/jackey/Downloads/CTK-2023.07.13/Libs/PluginFramework \ /home/jackey/Downloads/CTK-2023.07.13/build/CTK-build/Libs/PluginFramework \ /home/jackey/Downloads/CTK-2023.07.13/build/CTK-build/Libs/Core }
|
类
给工程添加一个类testPluginActivator
头文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #ifndef TESTPLUGINACTIVATOR_H #define TESTPLUGINACTIVATOR_H
#include <QObject>
#include "ctkPluginActivator.h" #include "ctkPluginContext.h"
class testPluginActivator : public QObject, public ctkPluginActivator { Q_OBJECT Q_PLUGIN_METADATA(IID "testPlugin") Q_INTERFACES(ctkPluginActivator) public: explicit testPluginActivator(); void start(ctkPluginContext *context); void stop(ctkPluginContext *context);
signals:
};
#endif
|
类实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include "testpluginactivator.h"
#include <QDebug>
testPluginActivator::testPluginActivator() {}
void testPluginActivator::start(ctkPluginContext *context) { qDebug() << "first plugin start: " << context; }
void testPluginActivator::stop(ctkPluginContext *context) { qDebug() << "first plugin stop: " << context; }
|
元数据
添加一个资源文件,命名为resource.qrc。给资源文件添加一个前缀/testPlugin/META-INF,其中testPlugin是工程的名字。再添加一个文本文件MANIFEST.MF,内容为
1 2
| Plugin-SymbolicName:testPlugin Plugin-Version:1.0.0
|
并把此文件添加到资源文件的前缀下

编译工程为动态库

元数据详细信息可以查看:CTK入门教程05.01:元数据
运行
启动器与插件配置使用,程序运行输出为
1 2 3 4 5 6 7 8
| 11:50:03: Starting D:\Projects\Qt\build-test-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\test.exe... Using database: "D:\\Projects\\Qt\\build-test-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\\debug\\configuration\\plugins.db" Using database: "D:\\Projects\\Qt\\build-test-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\\debug\\configuration\\plugins.db" Using database: "D:\\Projects\\Qt\\build-test-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\\debug\\configuration\\plugins.db" CTK plugin framework start... "Plugin[testPlugin_1.0.0] installed..." first plugin start: 0x23d7bcca1a0 Plugin start...
|
说明