Qt 【插件机制 plugin mechanism】

目的:解决Qt开发中的重复性工作,建立一个好的开发模式。

以开发一款图像处理软件为例进行说明。

当开发一款图像处理软件时,我们需要添加对图像的不同处理方法,比如blur,erode等操作。

当把一个操作方法如blur添加到软件时,具体的步骤为:1. 在菜单栏和工具栏中添加Action;2. 建立Action对应的槽函数;3. 在槽函数中,图像以QPixmap格式加载,转换为QImage格式,再转换为OpenCV中的Mat格式,继而对Mat进行blur处理,最后将Mat转换为QImage再转换为QPixmap格式显示在对话框中。

若我们将erode操作也添加到软件时,就需要重复上面的步骤。这样会产生很多重复性代码,是一个低级的开发架构。

这时,我们的插件机制就该出厂了。

首先,我们需要将重复性的工作剔除,找出每个特征中的关键点,那么针对上述问题,我们找到的关键点为:

->不同的特征对应Action的名称不同

->不同特征的编辑过程不同,即涉及到的图像处理方法不同

这样将每种操作都作为一个独立的插件

其次,创建一个接口(Interface),作为插件和主工程之间的通用协议。这样就可以通过这个接口来实现加载和调用插件,而不需要知道每个插件内部是如何实现的。 C++中接口是一个包含纯虚函数的类。声明的接口函数editor_plugin_interface.h如下:

Qt 【插件机制 plugin mechanism】_第1张图片

你可能感兴趣的:(QT)