目的:解决Qt开发中的重复性工作,建立一个好的开发模式。
【Qt 【插件机制 plugin mechanism】】以开发一款图像处理软件为例进行说明。
当开发一款图像处理软件时,我们需要添加对图像的不同处理方法,比如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|Qt常用UI控件读取、写入方法
- Qt|Qt For Android 之启动页
- QT|QT面试
- QT安装
- qt|qt for android实现app内通过按键后台运行程序
- qt|qt for android程序保活 程序后台一直运行不被清理掉(未完)
- QWidget实现手机ipad屏幕滑屏效果
- Qt|Qt官方示例-QML Axes
- 在QT/QML中使用FontAwesome做图标显示
- QT|QtCreator2.7.0桌面快捷方式创建过程