Windows编程中创建应用程序插件

1. 创建插件

   第一步,创建插件类。新建空项目Empty qmake Projecy,项目名称为plugin,在选择路径时指定到一个新建的myplugin目录中。建立好项目后向其中添加一个C++类,类名为RegExpPlugin,基类保持为空。

   第二步,定义插件类。将regexpplugin.h文件中的内容更改如下:

 

#ifndef REGEXPPLUGIN_H
#define REGEXPPLUGIN_H
#include<QObject>
#include "regexpinterface.h"
class RegExpPlugin : public QObject,RegExpInterface
{
  Q_OBJECT
  Q_PLUGIN_METADATA(IID"org .qter.Examples.myplugin.RegExpInterface"
FILE "myplugin.json")
Q_INTERFACES(RegExpInterface)
public:
  QString regexp(const QString &message)
}
# endif

为了使这个类作为一个插件,它需要同时继承自QObject和RegExpInterface。RegExpInterface是接口类,用来指明插件要实现的功能,regexpinterface.h文件中有定义,这个文件在后面的测试程序项目中。Q——PLUGIN_METADATA()宏用于声明插件中的元数据,其中必须指明IID标识符,标识符是一个字符串,必须保证他的唯一性,FILE指定一个JSON格式的插件元数据文件,该参数是可选的,其命名一般使用项目名称即可,内容一般只包含一组大括号。这里还需要使用Q_INTERFACES()宏将这个接口注册到Qt的元对象系统中,告知Qt这个类实现了哪个借口。最后还声明了一个regexp()函数,它是在 RegExpInterface中定义的一个纯虚函数。这里通过重写他来实现该插件的具体功能,就是将字符串中的第一个字符提取出来并返回 。

   下面到项目目录plugin中新建一个文本文档,输入一组大括号{},然后另存为myplugin.json。

   第三步,导出插件。将regexpplugin.cpp文件中的内容更改如下:

#include"regexpplugin.h>
#include<QRegExp>
#include<QtPlugin>
QString RegExpPlugin::regexp(const QString &message)
{
   QRegExp rx("\\d+");
   rx.indexIn(message);
   QString str = rx.cap(0);
   return str;
}
   第四部,更改项目文件。打开Plugin.pro文件,将其内容更该如下:
TEMPLATE     = 1ib
CONFIG      += plugin
INCLUDEPADH  += ../regexpwindow
HEADERS      =  regexppludin.h
SOURCES      =  regexppludin.cpp
TARGET       =  regexppludin
DESTDIR      =  ../plugins

   这里使用"TEMPLATE=lib”表明该项目要构建文库,而不是像以前那样的可执行文件;使用“CONFIG+=plugin”告知qmake要创建一个插件;因为项目中使用了regexpwindow目录中的regexpinterface.h文件,所以这里将该目录的路径添加到了INCLUDEPATH中;TARGET指定了产生的dll文件的名字;最后,使用DEST-DIR指定了生成的dll文件所在的目录。

   因为这个项目中使用了regexpinterface.h文件,而这个文件在另一个项目中,所以现在还无法构建该项目。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值