制作一个简单的 HMI 插件
本文演示在 Windows 上使用 Qt Creator 从零创建一个最简单的客户端插件。
须先完成 环境总览 中「客户端插件(Windows)」的准备。
目标
| 插件名 | 编译产物 |
|---|---|
| MyPlugin | MyPlugin.dll |
1. 新建工程
1. 打开新建工程向导
启动 Qt Creator,选择 文件 → New Project...。

2. 选择模板
在左侧选择 库,再选中 C++ Library,单击 选择... 进入下一步。

3. 设置工程位置
名称 填写 MyPlugin。创建路径 请按实际需求选择,然后单击 下一步。

4. 选择构建系统
Build system 选择 qmake,单击 下一步。

5. 选择 Qt 模块
将 Qt module 改为 Widgets,其余项保持默认,单击 下一步。

6. 单击下一步

7. 选择构建套件
勾选本机已配置的 Desktop Qt 5.15.2 MSVC2019 64bit(或等价的 MSVC 64-bit 套件),并勾选 Debug 与 Release。单击 下一步。

8. 单击完成

2. 修改工程文件
向导生成的工程尚不能作为客户端插件编译。请按下列内容改写 .pro、头文件与源文件。
拷贝开发包之前,编辑器可能提示找不到 plugincommon.h,属正常现象,完成第 3 步并执行 qmake 后即可解析。
1. 修改 MyPlugin.pro
打开 MyPlugin.pro,将内容替换为:
QT += widgets
CONFIG += c++11 plugin no_plugin_name_prefix
TEMPLATE = lib
DEFINES += PLUGIN_NAME=\\\"MyPlugin\\\"
#开启日志模块
DEFINES += LOG_MIN_FILE_LEVEL=XPLUGIN_LOG_LEVEL_DEBUG
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/lib/windows -lxplugin
#arm下使用此配置
#LIBS += -L$$PWD/lib/aarch64 -l:xplugin.so
HEADERS += myplugin.h
SOURCES += myplugin.cpp

示教器 Linux / ARM 环境请注释 Windows 链接行,启用 lib/aarch64 一行。
2. 修改 myplugin.h
打开 myplugin.h,将内容替换为:
#ifndef MYPLUGIN_H
#define MYPLUGIN_H
#include "plugincommon.h"
#include "interface/interfacemanager.h"
namespace xplugin {
class MyPlugin : public PluginBase {
Q_OBJECT
public:
explicit MyPlugin(QObject *parent = nullptr) : PluginBase(parent) {
setPluginLabel(tr("My Plugin"));
}
void init() override;
};
}
#endif // MYPLUGIN_H

3. 修改 myplugin.cpp
打开 myplugin.cpp,将内容替换为:
#include "myplugin.h"
#include <QWidget>
XPLUGIN_REGISTER(PLUGIN_NAME, MyPlugin)
void xplugin::MyPlugin::init() {
auto *w = new QWidget;
CreateCenterWidget(PLUGIN_NAME, w);
}

要点:
- XPLUGIN_REGISTER(PLUGIN_NAME, MyPlugin) 在
xplugin命名空间中注册插件,因此 MyPlugin 类须定义在xplugin命名空间内。 - PLUGIN_NAME 须与
.pro中DEFINES += PLUGIN_NAME=...的取值一致。后续打包时,配置文件中的 name 及插件文件名亦须与此一致,见 插件包制作。
3. 拷贝开发包头文件与库
从已获取的客户端插件开发包中,将 include 与 lib 两个目录拷贝到 MyPlugin.pro 所在目录(本文为 D:\MyPluginDemo\MyPlugin)。
开发包目录名随版本变化,下图以 xCorePlugin_v1.0.2.7 为例,请以实际获取的开发包为准。

拷贝完成后,工程目录应同时包含源码与开发包目录:

4. 执行 qmake 并编译
1. 执行 qmake
选择 构建 → 执行 qmake。

编译输出中出现 qmake / jom 成功信息后,即可继续构建。编辑器中的红色提示可能短暂残留,属正常现象。

2. 构建项目
选择 构建 → 构建项目 "MyPlugin"(或按 Ctrl+B)。

若编译成功,可跳过本节第 3、4 步,直接查阅产物。
3. 调整构建目录(编译失败时)
若「问题」面板出现类似下列信息,多为默认 Shadow build 目录的相对路径无法正确解析 Qt 头文件:
dependent '...\Qt\5.15.2\msvc2019_64\include\QtCore\QHash' does not exist

请将 Debug 与 Release 的构建目录改为工程旁的短路径,例如 D:\MyPluginDemo\Debug 与 D:\MyPluginDemo\Release。
- 打开左侧 项目,进入当前套件的 构建设置。
- Active build configuration 选择 Debug,将 构建目录 改为
D:\MyPluginDemo\Debug。



- 将 Active build configuration 切换为 Release,将 构建目录 改为
D:\MyPluginDemo\Release。


4. 再次构建
调整构建目录后,再次选择 构建 → 构建项目 "MyPlugin"。

编译输出中出现 jom.exe finished successfully 即表示成功。

5. 查找编译产物
Windows 上产物为 MyPlugin.dll。按上文调整构建目录后,Release 产物位于:
D:\MyPluginDemo\Release\release\MyPlugin.dll

若使用 Debug 配置,路径相应为 D:\MyPluginDemo\Debug\debug\。未改构建目录时,产物位于 Qt Creator 默认的 Shadow build 目录中。
示教器 Linux 端对应产物为共享库(.so)。
6. 打包与导入
编译成功仅得到插件动态库,尚不能直接导入 HMI。请按下列文档完成后续步骤: