QT创建应用程序插件

原创 2017年05月04日 09:18:22

创建插件要先创建接口,接口就是一个类,只包含纯虚函数,插件类要继承自该接口。插件类存储在一个共享库中,因此可以在应用程序运行时加载。创建一个插件包括以下几步:
1. 定义一个插件类,它需要同时继承自QObject类和该插件所提供的功能对应的接口类。
2. 使用Q_INTERFACES()宏在Qt的元对象系统中注册该接口。
3. 使用Q_EXPORT_PLUGIN2()宏导出该插件。
4. 使用合适的.pro文件构建该插件。

regexpplugin.h

#ifndef REGEXPPLUGIN_H
#define REGEXPPLUGIN_H
#include <QObject>
 #include "regexpinterface.h"
class RegExpPlugin : public QObject, RegExpInterface
 { 
Q_OBJECT 
Q_INTERFACES(RegExpInterface)
public: 
explicit RegExpPlugin(QObject *parent = 0);
QString regexp(const QString &message);
};
#endif // REGEXPPLUGIN_H

regexpplugin.cpp

#include "regexpplugin.h"
 #include <QRegExp>
 #include <QtPlugin>
RegExpPlugin::RegExpPlugin(QObject *parent) : QObject(parent){}
QString RegExpPlugin::regexp(const QString &message)
{ 
QRegExp rx("\\d+"); 
rx.indexIn(message); 
QString str = rx.cap(0); 
return str;
}
Q_EXPORT_PLUGIN2(regexpplugin, RegExpPlugin)

plugin.pro

TEMPLATE = lib
CONFIG += plugin
INCLUDEPATH += ../regexpwindow
HEADERS += \ regexpplugin.h
SOURCES += \ regexpplugin.cpp
TARGET = regexpplugin
DESTDIR = ../plugins

使一个应用程序可以通过插件进行扩展要进行以下几步:
1. 定义一组接口(只有纯虚函数的抽象类)。
2. 使用Q_DECLARE_INTERFACE()宏在Qt的元对象系统中注册该接口。
3. 在应用程序中使用QPluginLoader来加载插件。
4. 使用qobject_cast()来测试插件是否实现了给定的接口。

版权声明:本文为博主原创文章,转载请标明出处。

Qt5的插件机制(1)--Qt 框架中的插件加载机制概述

Qt的源码中通过 QFactory、QPlugin 和 Q 这三个类实现了Qt的插件加载机制, 这个机制可用于加载特定种类的插件。比如通过 QPlatformIntegrationFactory\QP...
  • NewThinker_wei
  • NewThinker_wei
  • 2014年11月20日 00:43
  • 12617

Qt5的插件机制(6)--开发Qt插件时几个重要的宏

如何开发Qt插件,可以在Qt Assistant 中搜索"Qt Plugins"或"How to Create Qt Plugins",看看那篇manual中的介绍。 其中涉及到了几个宏 Q_DE...
  • NewThinker_wei
  • NewThinker_wei
  • 2014年11月21日 02:24
  • 12443

创建和使用Qt插件的简单例子

  • 2011年11月07日 19:01
  • 4.51MB
  • 下载

【Qt】制作应用插件

在Qt下,插件有两种形式,一种是用于QtCreator下,扩展IDE功能。另一种是用于扩展开发者的应用。本文要讲的是后者。 定义一个纯虚类作为插件接口...
  • aqtata
  • aqtata
  • 2014年09月01日 21:24
  • 1074

如何创建Qt Plugins (插件)之 使用高级api

Qt提供了2个api来创建插件:QStringList SimpleStylePlugin::keys() const { return QStringList() ...
  • penghuilater
  • penghuilater
  • 2016年11月17日 13:41
  • 748

Qt Creator 插件开发(2):第一个插件

学习如何编写 Qt Creator 插件最好的方法是亲自编写一个插件。在自己动手的过程中了解插件编写机制。这也是本章所要解决的问题。在这一章中,我们将创建我们的第一个插件。这个插件不会做任何事情,仅仅...
  • imxiangzi
  • imxiangzi
  • 2016年04月10日 08:28
  • 1862

QT插件机制

Qt有两种与插件有关的API。一种用来扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编解码,自定义分格,等等,称为Higher-Level API 。另一种用于应用程序的功能扩展,称为Lowe...
  • imxiangzi
  • imxiangzi
  • 2016年04月10日 09:22
  • 3750

如何创建Qt Plugins (插件)之 使用低级api

使用低级的api:扩展Qt的应用程序 不仅仅是Qt 本身,Qt的应用程序也可以通过plugins来扩展。这个就要求应用程序来探测和加载插件通过QPluginLoader.在这个前提下, 插件可以提供任...
  • penghuilater
  • penghuilater
  • 2016年11月18日 10:36
  • 1073

QT5创建应用程序插件

主机环境:Windows XP
  • key123zhangxing
  • key123zhangxing
  • 2014年10月24日 17:59
  • 1945

如何创建Qt Plugins (插件)之 使用低级api

使用低级的api:扩展Qt的应用程序 不仅仅是Qt 本身,Qt的应用程序也可以通过plugins来扩展。这个就要求应用程序来探测和加载插件通过QPluginLoader.在这个前提下, 插件可以提供任...
  • penghuilater
  • penghuilater
  • 2016年11月18日 10:36
  • 1073
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT创建应用程序插件
举报原因:
原因补充:

(最多只允许输入30个字)