定义的接口
----------------------------------------------
#ifndef REGEXPINTERFACE_H
#define REGEXPINTERFACE_H
#include
class RegExpInterface
{
public:
virtual ~RegExpInterface()
{
}
virtual QString regexp(const QString &message)=0;
};
Q_DECLARE_INTERFACE(RegExpInterface, "org.myplugin.RegExpInterface")
#endif // REGEXPINTERFACE_H
实现的接口的类 头文件
---------------------------------------------
#define REGEXPPLUGIN_H
#include
#include
#include "regexpinterface.h"
class RegExpPlugin : public QObject, RegExpInterface
{
Q\_OBJECT
Q\_PLUGIN\_METADATA (IID "org.myplugin.RegExpInterface")
Q\_INTERFACES(RegExpInterface)
public:
QString regexp(const QString &message);
};
#endif // REGEXPPLUGIN_H
源文件
-------------------------------------
#include "regexpplugin.h"
QString RegExpPlugin::regexp(const QString &message)
{
return "hello world";
}
pro 文件
-------------------------------------
HEADERS += \
regexpplugin.h \\
regexpinterface.h
SOURCES += \
regexpplugin.cpp
TEMPLATE=lib
CONFIG +=plugin
TARGET =regexpplugin
测试插件的窗口
窗口的头文件
-----------------------------------------
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include "regexpinterface.h"
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q\_OBJECT
public:
explicit MainWindow(QWidget \*parent = 0);
~MainWindow();
private slots:
void on\_pushButton\_clicked();
private:
RegExpInterface \*regInterface;
Ui::MainWindow \*ui;
bool loadPlugin();
};
#endif // MAINWINDOW_H
窗口的源文件
----------------------------------------
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
bool MainWindow::loadPlugin()
{
QPluginLoader loader("../plug/plugin.dll");
QObject \*obj= loader.instance();
if(obj)
{
regInterface=qobject\_cast<RegExpInterface \*>(obj);
if(regInterface)
{
QString str= regInterface->regexp("jjjkk");
ui->Result->setText(str);
}
}
}
void MainWindow::on_pushButton_clicked()
{
this->loadPlugin();
}
插件中常用的pri文件
------------------------------------------------
HEADERS += \
$$PWD/common/HpQRCodeInterface.h
PROJECT_COMPONENTSOURCE = $$PWD/common
PLUGIN_INSTALL_DIRS = $$[QT_INSTALL_LIBS]/ukui-demo-plugin
手机扫一扫
移动阅读更方便
你可能感兴趣的文章