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的代码编辑页面

目录
相关文章
|
2月前
|
计算机视觉
基于QT的opencv插件框架qtCvFrameLearn实战
这篇文章详细介绍了如何基于Qt框架开发一个名为qtCvFrameLearn的OpenCV插件,包括项目配置、插件加载、Qt与OpenCV图像转换,以及通过各个插件学习OpenCV函数的使用,如仿射变换、卡通效果、腐蚀、旋转和锐化等。
42 10
|
2月前
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
QT多插件通信框架CTK编译记录
|
4月前
|
监控 Python
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
`pytest-qt` 是一个用于在 Qt 应用程序中进行 GUI 测试的 pytest 插件。
|
12月前
|
JSON 数据格式
《QT从基础到进阶·三十三》QT插件开发QtPlugin
《QT从基础到进阶·三十三》QT插件开发QtPlugin
191 0
Qt-做一个快速打包插件(一键完成项目软件打包)
Qt-做一个快速打包插件(一键完成项目软件打包)
115 0
|
存储 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插件完成网页浏览
451 0
QT调用IE浏览器COM插件完成网页浏览
|
编译器 C语言 Windows
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
277 0
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
|
安全 IDE 小程序
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
251 0
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
下一篇
无影云桌面