首页 > 其他分享 >qt 定义插件

qt 定义插件

时间:2023-06-07 11:32:50浏览次数:41  
标签:插件 qt RegExpInterface regexpplugin ui QString include MainWindow 定义

定义的接口
----------------------------------------------
#ifndef REGEXPINTERFACE_H
#define REGEXPINTERFACE_H
#include <QString>
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 <QObject>
#include <QString>
#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 <QMainWindow>
#include "regexpinterface.h"
#include <QPluginLoader>
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

qt 定义插件_#endif

 

 

标签:插件,qt,RegExpInterface,regexpplugin,ui,QString,include,MainWindow,定义
From: https://blog.51cto.com/u_4018548/6430542

相关文章

  • Python-PyQt5安装与简单使用
    一、安装1、安装PyQt5和PyQt5-toolspipinstallPyQt5-ihttps://pypi.douban.com/simplepipinstallPyQt5-tools-ihttps://pypi.douban.com/simple 安装结果查看 2、配置环境变量在系统变量Path中添加pyqt5-tools目录的绝对路径 3、安装qtdesigner......
  • 7、hive shell客户端与属性配置、内置运算符、函数(内置运算符与自定义UDF运算符)
    ApacheHive系列文章1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解2、hive相关概念详解--架构、读写文件机制、数据存储3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表4、hive的使用示例详解-事务表、视图、物......
  • vue常见自定义指令
    常见自定义指令一、响应缩放指令使用<divv-resize="resize"></div>代码/***响应缩放指令*@direction使用该指令可以响应元素宽高改变时执行的方法。*@resize{function}传入对应resize方法*v-resize="resize"**/exportdefault{bind(el,bi......
  • qt 度分秒和点度转换
    度分秒和点度互转QString字符串截取1QStringdegree2Dmc(doubledbDegree)2{3doublelon=dbDegree;4if(lon<0.0)5lon=-dbDegree;6intnDegree=(int)lon;7doubledbMin=(lon-nDegree)*60.0;8intnMin=dbM......
  • qt 自定义工具栏
    自定义工具栏这个类中杂质较多,主要是是单击标签改变经纬度显示类型。调用方法,在析构函数中删除if(_statusBar)delete_statusBar;voidMainWindow::createStatusBar(){if(!_statusBar)_statusBar=newTDStatusBar(this);_statusBar->setFixe......
  • 资源-vscode 插件
    2023-6bettercomments//todo会高亮gitlensliveserver如果有安装npm的就更好prettier-codeformatterremoveemptylines虽然可以正则替换但是还是这个方便rainbowcsvofficeviewer不会自动更新的。还是简单用这个查看一下autorenametag好像会导致bug?......
  • 如何在Flutter中构建自定义Widget
    Flutter最近越来越流行。您可以使用它来构建可在MacOS、Windows和Linux上顺畅运行的复杂应用程序。但是构建这些应用程序并不总是一个简单的过程。您经常需要重构代码以保持应用程序的性能。一种这样的重构技术是提取重复的代码和组件并在多个地方重用它们。在本教程中,您......
  • 自定义上传图片,动态拼接html元素,node插入/替换指定位置旧元素
    <!DOCTYPEhtml><head>  <metaname="viewport"    content="width=device-width,initial-scale=0.5,maximum-scale=1.0,minimum-scale=0.5,user-scalable=yes">  <title>上传图片</title></head><bo......
  • 在 SSM 中基于 MyBatis-PageHelper 分页插件的分页功能实现
    1引入分页插件2配置拦截器插件注意顺序!!!3插件使用serviceImpl.javacontroller.javajsp文件4效果测试pagehelper/Mybatis-PageHelper说明文档Spring4。X应用DEMO......
  • Pycharm插件之Statistic(统计代码行数、字数等数据)
    Pycharm插件之*Statistic(统计代码行数、字数等数据)*【一】引言PyCharm插件“Statistic”可以帮助我们统计代码行数、字数、注释数、空行数等代码质量相关的数据,用来评估代码的质量和工作量的大小。以下是详细步骤:1.打开PyCharm,进入Settings(设置)。2.选择Plugins......