跳到主要内容

制作一个简单的 HMI 插件

  • 以 Windows + Qt Creator为例 制作一个简单的HMI插件。 Linux 环境下步骤相同,链接 xplugin.so即可。

1. 获取开发包


2. 工程配置(.pro)

  • 使用QtCreator新建一个工程。
  • 将Rokae+开发包内的 include和lib文件夹拷贝到工程的pro文件的同级目录。
  • 插件名为MyPlugin
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

3. 插件类与注册

  • 创建 MyPlugin 插件类。
// 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;
};
}

// myplugin.cpp
#include "myplugin.h"

XPLUGIN_REGISTER(PLUGIN_NAME, MyPlugin)
void xplugin::MyPlugin::init() {
auto *w = new QWidget;
CreateCenterWidget(PLUGIN_NAME, w);
}

要点:

  • XPLUGIN_REGISTER(PLUGIN_NAME, MyPlugin) 宏定义中调用xplugin命名空间,因此MyPlugn类需要在xplugin命名空间下定义。
  • PLUGIN_NAME 即pro文件中的插件名标识。

4. 编译与部署

  • 编译得到 MyPlugin.dll 或者 MyPlugin.so(arm环境)
  • 参照 配置格式 打包插件包。
  • 进行 安装部署 操作。