QT 插件创建

简介: QT 插件创建

在C++中,与接口等价的是具有纯虚函数的类。因此需要一个包含了期望在插件中出现所有函数的接口

1.接口

接口是一个基本上不需要做什么的类,但是它列出了应用程序需要的所有插件的草图。在实际项目中都是从一开始就将所有必须的函数都包含在接口中,后期不修改接口中的内容。

打开Qt Creator

选择headfile之后

进入下一步输入插件名称 这里是cvplugininterface 下一步一直到进入编辑模式 修改代码如下图

附上代码

#ifndef CVPLUGININTERFACE_H
#define CVPLUGININTERFACE_H
#endif // CVPLUGININTERFACE_H
#include<QObject>
#include<QString>
#include<opencv2/opencv.hpp>
class CvPluginInterface{
public:
    virtual ~CvPluginInterface(){}
    virtual QString description()=0;
    virtual void processImage(const cv::Mat &inputImage,cv::Mat &outputImage)=0;
};
#define CVPLUGININTERFACE_IID "com.amin.cvplugininterface"
Q_DECLARE_INTERFACE(CvPluginInterface,CVPLUGININTERFACE_IID)
#endif

ifndef CVPLUGININTERFACE_H

define CVPLUGININTERFACE_H

endif

这部分代码对每个头文件只进行一次的包含和处理,C++中有很多方法可以实现此目标,但是这种方法最为广泛的使用,尤其是利用Qt和Opencv进行高程度夸平台支持

前面的代码基本上包含了Qt中插件接口所需的所有内容。在市里接口中只有两种简答类型的函数需要插件支持

前面接口的第一个公有成员函数是虚析构函数,它是最重要的方法之一,但是往往被很多人忽视,

基本上,任何一个虚拟方法以及打算使用多形态方法的C++基类,都必须包含一个虚析构函数。这有助于确保当利用基类的指针访问子类时,可以调用子类的析构函数。可是出现这种常见的C++编程错误时,大多数C++编译器并没有警示信息。

因此我们的插件接口包含了一个名为descprintion()的函数,他的目的是返回所有插件描述及相关有用的信息,插件接口还包含了一个名为processImage的函数,该函数以OpenCV Mat类作为输入,返回“1”作为输出,很明显,在这个函数中,我们每个插件都可以执行某种图像处理、过滤等操作,并返回处理结果。

在此之后,使用Q_DECLARE_INTERFACE宏将类定义为接口。如果不包含这个宏,Qt将无法把这个类作为插件接口来使用 CVPLUGININTERFACE_IID 是与包名格式类似的唯一字符串,但是可以根据自己的喜好来更改。

下一步创建插件

现在将使用CvPluginInterface 接口类,创建名为median_filter_plugin的插件。首先

一定要将类型选为Shared Library 然后输入media——filter_plugin 作为名称并单击next,然后选取工具箱类作为桌面,并单击 forward 在select required modeules 页面中,确保只选中了QtCore 并单击next ,不需要修改任何选项,直到最终进入了QtCreator的代码编辑页面

目录
相关文章
|
存储 JSON API
Qt开发技术:Qt的动态静态插件框架介绍和Demo
Qt开发技术:Qt的动态静态插件框架介绍和Demo
Qt开发技术:Qt的动态静态插件框架介绍和Demo
|
Ubuntu Shell 计算机视觉
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
|
安全 JavaScript 编译器
QT调用IE浏览器COM插件完成网页浏览
QT调用IE浏览器COM插件完成网页浏览
397 0
QT调用IE浏览器COM插件完成网页浏览
|
编译器 C语言 Windows
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
248 0
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
|
安全 IDE 小程序
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
222 0
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
|
编译器
Qt Creator plugin动手实践(5)分享一个简化版的插件框架,qt-creator-minimal
Qt Creator plugin动手实践(5)分享一个简化版的插件框架,qt-creator-minimal
373 0
Qt Creator plugin动手实践(5)分享一个简化版的插件框架,qt-creator-minimal
|
IDE 编译器 区块链
Qt Creator plugin动手实践(2)自己动手写qt creator插件,实现自定义工具栏按钮
Qt Creator plugin动手实践(2)自己动手写qt creator插件,实现自定义工具栏按钮
472 0
Qt Creator plugin动手实践(2)自己动手写qt creator插件,实现自定义工具栏按钮
Qt Creator代码风格-使用Beautifier插件利用Astyle格式化
Qt Creator代码风格-使用Beautifier插件利用Astyle格式化
242 0
|
XML 程序员 C语言
Qt编写控件属性设计器1-加载插件
一、前言 加载插件是整个属性设计器的第一步要打通的功能,插件中的控件都加载不了,后面就别搞别玩下去了没法玩的,要从一个动态库中加载出来控件,肯定需要用到反射机制,以前做.NET开发的时候就觉得反射这个东西相当强大,居然可以读取DLL加载出来控件,现在用Qt,发现Qt也有反射机制,也许这东东可能各大.
1011 0