QT插件学习系列(三) 插件间通信

本文介绍了QT插件间通信的重要性,并提出了低耦合、代码量少、扩展性强的设计原则。通过一个实例展示如何在QT插件中实现通信,包括创建标准通信数据包,改进接口设计,以及利用PluginManager类进行消息转发。通过插件A和插件B的互动,演示了如何实现无依赖关系的插件间的0耦合通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT插件学习系列(三) 插件间通信

1、 概述

前两篇文章学完我们可以从0开始写一个 QT 插件了,也有自己的简易版插件框架了。但是例子中只给出了单个插件的加载与调用,我们实现插件化的目的是为了扩展性,实际项目中会存在插件A,插件B,插件C。而这些插件之间怎么通信 ? 或者说怎么建立一种良好的通信结构,这既是一项必不可少的工作,更是完善我们插件框架的重要里程碑。

在我们实现通信机制的时候,要考虑下面几点(不止在这儿,在任何时候都要这么做):

1、 耦合性要低。
2、 代码量要少。
3、 扩展性要强。
4、 封装、继承、多态。

我们要尽量符合面向对象原则,面向对象中,再面向接口编程,而不是面向实现。

通信包括插件和主程序之间的通信,也包括插件和插件之间的通信,首先,在插件里面是获取不到主程序的内容的(试想键盘能知道 windows 内核的东西吗,它们之间是主从设备的关系,即插件管理器和插件也是主从关系),其次插件 A 也不知道插件 B 的存在(键盘不知道鼠标的存在),即无依赖关系的插件之间 0 耦合。

下图展示了我们整个插件的通信机制:
插件通信

本想建立一个单例的消息中转站 Router,用于转发消息的,但是一想算了,既然是个 Demo 就简单点,直接用 PluginManager 类吧。

2、

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q2nAmor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值