qt_plugin的创建和调用方法

qt_plugin的创建和调用方法

ID:5996860

大小:426.83 KB

页数:15页

时间:2017-12-30

qt_plugin的创建和调用方法_第1页
qt_plugin的创建和调用方法_第2页
qt_plugin的创建和调用方法_第3页
qt_plugin的创建和调用方法_第4页
qt_plugin的创建和调用方法_第5页
qt_plugin的创建和调用方法_第6页
qt_plugin的创建和调用方法_第7页
qt_plugin的创建和调用方法_第8页
qt_plugin的创建和调用方法_第9页
qt_plugin的创建和调用方法_第10页
资源描述:

《qt_plugin的创建和调用方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于QTPlugin框架结构日常总结2009-04-2418:56:02阅读168评论0字号:大中小订阅一:qtplugin介绍QtPlugin和其他类型的插件一样,是一种计算机应用程序,它和主应用程序(hostapplication)互相交互,以提供特定的功能。应用程序支持Plugin有许多原因,一些主要原因包括:使得第三方开发者有能力扩展应用程序,以提供无法先期预料的特色;减小应用程序的大小;由于软件版权之间的不兼容性将源代码和应用程序分享。QtPlugin分动态插件和静态插件两种。二:qtplugin创建和使用方法Qt有两种

2、与插件有关的API。一种用来扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编解码,自定义分格,等等,称为Higher-LevelAPI。另一种用于应用程序的功能扩展,称为Lower-LevelAPI。前一种是建立在后一种的基础之上的。这里讨论的是后一种,即用来扩展应用程序的Lower-levelAPI。让应用程序支持插件扩展的步骤:1.定义一个接口集(只有纯虚函数的类),用来与插件交流。2.用宏Q_DECLARE_INTERFACE()将该接口告诉Qt元对象系统。Q_DECLARE_INTERFACE(BrushInter

3、face,"com.trolltech.PlugAndPaint.BrushInterface/1.0")3.应用程序中用QPluginLoader来装载插件。4.用宏qobject_cast()来确定一个插件是否实现了接口。QObject*obj=newQTimer;QTimer*timer=qobject_cast(obj);写一个插件的步骤:1.声明插件类,该类从QObject和该插件希望实现的接口继承而来。2.用宏Q_INTERFACES()将该接口告诉Qt元对象系统。classBasicToolsPlu

4、gin:publicQObject,publicBrushInterface,publicShapeInterface,publicFilterInterface{Q_OBJECTQ_INTERFACES(BrushInterfaceShapeInterfaceFilterInterface)public:...};3.用宏Q_EXPORT_PLUGIN2()导出插件。Q_EXPORT_PLUGIN2(PluginName,ClassName)4.用适当的.pro文件构建插件。下面的代码声明了一个接口类:classFilterIn

5、terface{public:virtual~FilterInterface(){}virtualQStringListfilters()const=0;virtualQImagefilterImage(constQString&filter,constQImage&image,QWidget*parent)=0;};Q_DECLARE_INTERFACE(FilterInterface,"com.trolltech.PlugAndPaint.FilterInterface/1.0")这里是实现该接口的插件类的定义:#includ

6、e#include#include#includeclassExtraFiltersPlugin:publicQObject,publicFilterInterface{Q_OBJECTQ_INTERFACES(FilterInterface)public:QStringListfilters()const;QImagefilterImage(constQString&filter,constQImage&image,

7、QWidget*parent);};根据插件的类型不同,pro文件中配置上有不同。下面是pro文件分析:TEMPLATE=lib//声明为lib,动态和静态插件一样。CONFIG+=pluginstatic//声明为plugin,带static表面为静态,否则为动态。INCLUDEPATH+=../..HEADERS=basictoolsplugin.hSOURCES=basictoolsplugin.cppTARGET=$$qtLibraryTarget(pnp_basictools)//指明插件的名称DESTDIR=../..

8、/plugandpaint/plugins加载插件的主应用程序默认在当前目录下的plugins文件夹中寻找可用插件,如果是动态插件,则直接放在plugins文件夹中便可,如果是静态,则需要在主应用程序的main函数的开始的地方用宏:Q_IMPORT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。