QT5插件制作

一、Qt插件机制

1、Qt插件简介

插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。

2、Qt插件API

Qt提供了两种API用于创建插件:一种是高阶API,用于扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶API,用于扩展Qt应用程序。

3、通过插件扩展应用程序功能

A、定义一个接口集(只有纯虚函数的类),用来与插件交流。
B、用宏Q_DECLARE_INTERFACE()将该接口告诉Qt元对象系统。
C、应用程序中用QPluginLoader来加载插件。
D、用宏qobject_cast()来判断一个插件是否实现了接口。

4、创建插件

创建一个插件的步骤如下:
A、声明插件类,插件类继承自QObject和插件实现的接口。
B、用宏Q_INTERFACES()将插件接口告诉Qt元对象系统。
C、用宏Q_EXPORT_PLUGIN2()导出插件类。
D、用适当的.pro文件构建插件。
在加载插件前, QCoreApplication对象必须被初始化。

二、插件开发实例

1、创建工程

QT5插件制作_第1张图片

2、创建GUI应用工程

QT5插件制作_第2张图片
QT5插件制作_第3张图片
这里选QWidget与QMainWindow都无所谓
QT5插件制作_第4张图片
选择自己安装好的编译器
QT5插件制作_第5张图片

2、创建插件接口基础类

在MyWidget应用增加一个接口MyfirstPlugin.h。内容如下:

#ifndef MYFIRSTPLUGIN_H
#define MYFIRSTPLUGIN_H
#include
class MyfirstPlugin
{
public:
    virtual ~MyfirstPlugin(){}
    virtual QString name()=0;
};
#define MYPLUGININTERFACE_IID "com.FirstPlugin.myfirstInterface"
Q_DECLARE_INTERFACE(MyfirstPlugin, MYPLUGININTERFACE_IID)

#endif // MYFIRSTPLUGIN_H

MYPLUGININTERFACE_IID应该是包名格式类似的唯一字符串,可以根据自己的喜好来该。注意:必须定义纯虚析构函数,且该接口的所有函数必须为虚函数。

3、创建库工程

在First子项目中添加一个名为MyPlugin的子库工程。
QT5插件制作_第6张图片
注意要在CONFIG中添加plugin,是为了告诉Qt这是个插件,同时要把上一步制作的接口文件的路径加载进来。
QT5插件制作_第7张图片
…//我看看有人读没,有人读我就继续写。/

你可能感兴趣的:(QT5,插件制作)