本文介绍的是Qt 动态插件编写要点,一般在编程的过程中都要注意编写规则,那么性质一样,先来看本文内容。

Qt 动态插件编写要点是本文要介绍的内容,有介绍Qt插件在.pro工程文件中的内容,不多说了,先来看内容。

详解 Qt 动态插件编写要点(qt 动态添加的控件并布局)  动态 插件 第1张

一、编写插件的四个步骤

1.声明一个插件类。

2.实现插件提供的接口。

3.使用Q_EXPORT_PLUGIN2() 宏导出插件。

4.使用一个适当的.pro工程文件构建插件。

二、声明插件类

我们继承QObject和接口类(interface类)两个类来构造这个插件类。Q_INTERFACES宏告知Qt这个类实现的是哪个接口。如:

  1. Q_INTERFACES(FilterInterface)

三、实现插件提供的接口

在插件类的实现文件中实现插件所提供的接口,供调用。

四、导出插件

在插件接口实现文件中,我们使用Q_EXPORT_PLUGIN2宏让Qt知道该类是一个插件。如:

  1. Q_EXPORT_PLUGIN2(pnp_extrafilters,ExtraFiltersPlugin);

***个参数是插件的名字;通常给予插件和其生成的目标库文件(.pro中TARGET变量所赋的名字)有着相同的名字。

五、动态插件的 .pro工程文件

Here’s the project file for building the Extra Filters plugin:

TEMPLATE = lib //模块设置,lib指生成库文件,app指生成应用程序(默认)

CONFIG += plugin //CONFIG用来告诉qmake关于应用程序的配置信息,静态插就添加为plugin static。

INCLUDEPATH += ../.. //INCLUDEPATH变量设置全局头文件的寻找路径(例如使用

#include <…>包含的头文件) “.”当前目录,”..”上一层目录。(在这里是为了能够添加接口定义文件interface.h)

HEADERS = extrafiltersplugin.h//工程中包含的头文件

SOURCES = extrafiltersplugin.cpp//工程中包含的源文件

TARGET = $$QtLibraryTarget(pnp_extrafilters)//TARGET变量指定生成的目标库文件的名字,生成应用程序时即指定生成应用程序名

通常TARGET和插件(由Q_EXPORT_PLUGIN2设置)拥有相同的名字。

DESTDIR = ../../plugandpaint/plugins //DESTDIR变量指定我们要安装(生成)

插件的地方,即指定放置生成的应用程序(插件)的目录。

用蓝色字体显示的表示根据具体应用程序会做相应改变。

六、接口的定义

接口类定义了插件所提供的函数。一个接口是一个只由纯虚函数组成的类。

我们使用Q_DECLARE_INTERFACE宏让Qt的元对象系统(meta object system)注意到接口。如:

  1. Q_DECLARE_INTERFACE(FilterInterface,"com.trolltech.PlugAndPaint.FilterInterface/1.0");

这样做才有可能在运行时识别插件并实现接口。第二个参数是一个必须以唯一的方式识别接口的字符串。

注:Qt Creator编译链接后会将可执行文件生成到一个projectname_build_desktop的目录中,如想要生成的文件生成在源代码所在目录下,方法如下:

选择Qt Creator左边的“Project”标签,General栏目中有一个选择框“Shadow Build”,取消即可。

Shadow Build也就是使构建生成的目录和源代码目录分开,可根据自己的使用习惯设置。

七、插件Qt工程文件.pro往Visual Studio 2005中的移植

Qt插件的.pro工程文件中,会包含构建插件所需的特定配置信息,在VS 2005中写插件程序时,需要在工程属性中进行对应配置,才能顺利生成动态插件。

注:在Qt或VS 2005中编写Qt插件程序,都是建立Qt C++的控制台应用程序工程。

以下是Qt Creator中.pro文件和VS 2005中配置信息的对应实现关系:

1、TEMPLATE = lib VS中对应设置:工程属性配置属性常规项目默认值配置类型其值改为 动态库(.dll)

2、CONFIG += plugin 这个貌似在VS中没有配置的地方

3、INCLUDEPATH += .VS中对应设置:工程属性配置属性C/C++常规附加包含目录中其值在***添加.,即当前路径。

4、SOURCES += \ helloworldplugin.cpp

5、HEADERS += \ helloworldplugin.h

6、TARGET = $$qtLibraryTarget(helloworld) DESTDIR = ./plugin VS中对应设置:工程属性配置属性链接器 输出文件将其值改为 plugin\helloworld.dll

小结:详解 Qt 动态插件编写要点的内容介绍完了,希望本篇文章对你有帮助!!!

转载请说明出处
知优网 » 详解 Qt 动态插件编写要点(qt 动态添加的控件并布局)

发表评论

您需要后才能发表评论