![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt插件
文章平均质量分 80
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
Qt插件:QPluginLoader
一、描述QPluginLoader 提供对 Qt 插件的访问。Qt 插件存储在共享库(DLL)中,与使用 QLibrary 访问共享库相比,它具有以下优势:QPluginLoader 检查插件是否链接到与应用程序相同的 Qt 版本。 QPluginLoader 提供对根组件对象(instance())的直接访问,而不是强制手动解析 C 函数。QPluginLoader 对象的实例对单个共享库文件进行操作。它以独立于平台的方式提供对插件功能的访问。如果插件尚未加载,则 instance() 函原创 2021-09-12 16:29:18 · 7845 阅读 · 0 评论 -
Qt插件:QLibrary
一、描述QLibrary 对象的实例对单个共享对象文件(库文件)进行操作。QLibrary 以独立于平台的方式提供对库中功能的访问。可以在构造函数中传递文件名,也可以使用 setFileName() 显式设置它。加载库时,除非文件名具有绝对路径,否则QLibrary 将搜索所有系统特定的库位置(例如 Unix 上的 LD_LIBRARY_PATH)。如果文件名是绝对路径,则首先尝试加载此路径。如果找不到文件,QLibrary 会尝试使用不同平台特定的文件前缀(如 Unix 和 Mac 上的“lib”原创 2021-09-10 13:39:08 · 6374 阅读 · 0 评论 -
定义插件相关的宏
头文件:#include <QtPlugin>1、Q_DECLARE_INTERFACE(ClassName,Identifier)该宏将标识符(字符串)与名为 ClassName 的接口类相关联。标识符必须是唯一的。 例如:#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface/1.0"Q_DECLARE_INTERFACE(BrushInterface, .原创 2021-09-08 13:00:14 · 698 阅读 · 0 评论 -
【翻译】部署Qt插件
本文说明如何为 Qt 或您的应用程序部署插件库以在运行时加载。如果使用静态插件,那么插件代码已经是应用程序可执行文件的一部分,不需要单独的部署步骤。一、插件目录当应用程序启动时,应用程序的可执行目录(QCoreApplication::applicationDirPath())是 Qt 搜索插件的基本目录。例如,在 Windows 上,如果应用程序在 C:\Program Files\MyApp 并且它有一个样式插件,Qt 会在 C:\Program Files\MyApp\styles 中查找。原创 2021-09-08 12:40:46 · 1169 阅读 · 0 评论 -
【翻译 + 整理】如何创建Qt插件
Qt 提供了两个用于创建插件的 API:用于编写 Qt 本身扩展的高级 API:自定义数据库驱动程序、图像格式、文本编解码器、自定义样式等。 用于扩展 Qt 应用程序的低级 API。一、高级 API:编写 Qt 扩展插件编写扩展 Qt 本身的插件步骤:继承适当的插件基类 实现一些功能 添加一个对应的宏派生插件默认存储在标准插件目录的子目录中。如果插件未存储在适当的目录中,Qt 将找不到它们。下面是公有的插件基类:QImageIOPlugin:目录:imageformats。GU原创 2021-09-06 12:13:13 · 1835 阅读 · 0 评论 -
QT插件开发(5)-- 插件工程作为子工程
创建一个插件工程生成库文件然后把库文件添加到调用工程里的方式很麻烦,以下是把调用插件的工程和插件插件的工程合并起来创建一个main.pro文件,用来包含各个子工程,内容如下:TEMPLATE = subdirs 表明这是个工程集SUBDIRS = Call_Plugin01 Plugin01 Plugin02 把这三个工程作为子工程包含进来Call_Plugin01.depends = Plugin01 Plugin02表明调用工程Call_Plugin01的运行依赖于Plu原创 2020-07-22 11:39:35 · 1323 阅读 · 5 评论 -
QT插件开发(4)-- 加载一个窗口插件
窗口插件和前面的创建方式是一样的,就是将继承QObject改成继承QWidget同时继承插件接口和QWidget,则此类的对象既是一个窗口也是一个插件#ifndef PLUGIN_WIDGET_H#define PLUGIN_WIDGET_H#include "plugin_widget_global.h"#include "PluginInterface.h"#include <QWidget>#include <QDebug>class PLUGIN_W原创 2020-07-21 18:35:01 · 2578 阅读 · 0 评论 -
QT插件开发(3)-- 插件之间相互通信
插件的通信通过插件管理器来管理,插件管理器转发插件的消息首先,改一下接口,增加一个插件间通信的结构体,增加插件发送消息和接收消息的纯虚函数供插件实现#ifndef PLUGININTERFACE_H#define PLUGININTERFACE_H#include <QtPlugin>#include <QJsonObject>struct PluginMetaData{ QString from;//消息来源 QString dest;//消原创 2020-07-21 17:27:25 · 6703 阅读 · 7 评论 -
QT插件开发(2)-- 创建插件管理器统一管理插件
接上一篇用上一篇创建插件的方法创建两个插件,分别命名为 Plugin01 和 Plugin02改一下插件接口中的函数如下:get_name()获取本插件的名称,管理器通过插件的名称来管理插件Plugin01插件内容如下:Plugin02大同小异:以下是插件管理器,查考了这篇:https://blog.csdn.net/weixin_38416696/artic...原创 2020-05-02 20:48:06 · 5314 阅读 · 4 评论 -
QT插件开发(1)-- 创建并调用插件
首先我们来创建一个插件工程:选择以下工程模板插件名称叫做:Plugin01然后自动生成以下文件:然后创建一个头文件,创建插件的基类,定义好插件里要实现的内容,如下:然后让Plugin01继承这个借口类和QObject类,并实现接口中定义的函数,如下:点击构建,这时候在生成目录下会生成库文件:好了,插件创建完成了,我们再来创建一个工程调...原创 2020-05-02 14:44:02 · 4880 阅读 · 0 评论