QT插件库开发

目前用于底盘、上桩等不同业务逻辑的带界面的插件是使用QT插件的形式进行加载的, 因此此部分的插件的开发亦遵循QT插件的一般开发方式 ( How to Create Qt Plugins ). 唯一额外的要求是, 需要实现规定的几个接口, 以便插件能够被正确加载和启动. 需要实现的接口定义于 model/CAModelInterface.h h文件中, 其内容如下:

class CAModelInterface
{
public:
    virtual ~CAModelInterface() = default;

    // 传递主qml文件路径, 纯虚函数必须实现
    virtual QString getViewResource() = 0;
    // 返回前端对象
    virtual QObject* getViewObject() = 0;

    // 启动Qt插件
    virtual void start(Cagy::OSP::BundleContext::Ptr pContext, EventAdmin::EventAdminService::Ptr pEAService) = 0;

    // 停止Qt插件
    virtual void stop(Cagy::OSP::BundleContext::Ptr pContext, EventAdmin::EventAdminService::Ptr pEAService) = 0;

};

其中, 启动和停止函数的参数是Qt插件的上下文和事件总线服务, 可供插件内部进行OSP相关服务以及EventAdmin相关服务的调用. 具体方式可参考 QT插件示例 .