[发明专利]解耦合的方法、装置及计算机可读存储介质在审
申请号: | 201811442974.X | 申请日: | 2018-11-29 |
公开(公告)号: | CN109582399A | 公开(公告)日: | 2019-04-05 |
发明(设计)人: | 张雷 | 申请(专利权)人: | 深圳市技达信息技术有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 槽函数 发射 解耦合 计算机可读存储介质 计算机技术领域 编程语言 定义信号 实际参数 调用 指向 | ||
本发明属计算机技术领域,公开了一种解耦合的方法,方法基于一个发射者、及一个接收者,包括:发射者定义信号,所述信号包括有槽函数类型;接收者按照所述槽函数类型来定义槽函数;将接收者及其槽函数连接到发射者的所述信号;发射者发射所述信号;接收者定义的槽函数被调用,且所述槽函数收到的第一个实际参数为指向接收者的变量。利用本发明公开的方法,在不依赖c++编程语言之外的机制和工具的前提下,即可实现发射者与接收者之间的解耦合。
技术领域
本发明涉及计算机技术领域,尤其涉及一种解耦合的方法、装置及计算机可读存储介质。
背景技术
Qt是业界非常著名的基于c++的框架。Qt提供了一种被叫做“信号槽”的解耦合机制;但该机制需要依赖于c++编程语言之外的、Qt私有的元对象编译机制及相应的工具(元对象编译器)。由于元对象编译器需要对程序源文件进行单独、额外的处理,因此引入元对象编译机制就增加了工程的复杂程度。
综上,需要发明一种解耦合的新方法,该新方法能够克服现有技术的上述缺陷。
发明内容
基于此,为解决传统技术中Qt信号槽需要依赖于c++编程语言之外的机制和工具、及增加了工程的复杂程度等的技术问题,特提出了一种解耦合的方法、装置及计算机可读存储介质。
一种解耦合的方法,方法基于一个发射者、及一个接收者,包括:
发射者、接收者具有或可以转换到一个共同的基础类型;
发射者定义信号,所述信号包括有槽函数类型、信号名称、及槽列表;所述槽函数类型的第一个参数为指向所述基础类型的变量;所述槽列表用于存储若干个槽;所述的槽包括有一个指向所述基础类型的变量、及一个指向槽函数的变量;
接收者按照所述槽函数类型来定义槽函数;
将接收者及其槽函数连接到发射者的所述信号;该信号连接的过程包括:创建一个所述的槽,让所述指向所述基础类型的变量指向接收者,让所述指向槽函数的变量指向接收者的所述槽函数;将所述的槽保存到所述信号的所述槽列表;
发射者发射所述信号,该信号发射过程包括:发射者遍历所述信号的所述槽列表,获取到所述指向槽函数的变量、及所述指向所述基础类型的变量;发射者按照所述槽函数类型来传递参数、将所述指向所述基础类型的变量作为参数传入、调用所述槽函数;
接收者定义的槽函数被调用,且所述槽函数收到的第一个实际参数为指向接收者的变量。
在一些实施例中,在所述信号发射过程中,发射者复制所述信号的所述槽列表到一个临时变量,发射者通过遍历所述临时变量来完成信号发射,而不再通过遍历所述信号的所述槽列表来完成信号发射。
在一些实施例中,在所述槽函数类型的类型名中包含所述信号名称。
在一些实施例中,在所述槽列表的名称中包含所述信号名称。
在一些实施例中,将所述信号的发射过程作为一个复合语句。
在一些实施例中,将接收者及其槽函数与发射者的所述信号断开连接,该断开连接的过程包括:创建一个所述的槽,让所述指向所述基础类型的变量指向接收者,让所述指向槽函数的变量指向接收者的所述槽函数;将所述的槽从所述信号的所述槽列表中移除。
在一些实施例中,接收者包括有一个信号列表,所述信号列表用于存储“指向所述信号的所述槽列表的变量”;
在所述信号连接的过程中,接收者将“指向所述信号的所述槽列表的变量”保存至所述信号列表;
在所述断开连接的过程中,接收者将“指向所述信号的所述槽列表的变量”从所述信号列表中移除;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市技达信息技术有限公司,未经深圳市技达信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811442974.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种状态处理方法、装置及电子设备
- 下一篇:程序调用方法及装置