目录
前言
在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景:
我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡,发出 switchToAlbumIntetrfaceSig 给父级部件专辑卡视图,因为专辑卡视图有许多个分组,比如上图中为 aiko 分组,可能还有 柳井爱子 分组,那么这些视图都应该将 switchToAlbumInterfaceSig 转发给父级窗口我的音乐界面,我的音乐界面再转发给主界面,从而实现界面跳转。
可以看到上面这种做法很麻烦,专辑卡上拥有 switchToAlbumInterfaceSig 属性就算了,还要连累父级专辑卡视图以及祖父级我的音乐界面也拥有这个属性才能实现信号的转发。有没有一种方式可以省掉中间的转发过程,从而一步到位通知主界面呢?这就需要使用下面所介绍的全局事件总线思想。
全局事件总线
Vue 中的全局事件总线
在 vue 中要实现任意组件间通信,可以在 Vue.prototype 上添加一个全局事件总线 $bus 属性,当组件 A 想要给组件 B 发送一些数据时,只需要在 A 中 this.$bus.$emit(事件名,数据) 发送数据,在 B 中 this.$bus.$on(事件名,回调) 就能通过总线收到数据,而无需借助其他组件的转发。将事件名视为信号,回调视为槽函数,那么这个过程和 Qt 的信号和槽机制神似。
Qt 中的全局事件总线
仿照上述过程,我们来定义一个全局事件总线类,并使用单例模式保证只能实例化出一个对象:
复制<code># coding:utf-8
from PyQt5.QtCore import QObject, pyqtSignal
class SignalBus(QObject):
""" 全局事件总线 """
switchToAlbumInterfaceSig = pyqtSignal(str)
def __new__(cls, *args, **kwargs):
if not hasattr(cls, '_instance'):
cls._instance = super(SignalBus, cls).__new__(cls, *args, **kwargs)
return cls._instance
bus = SignalBus()
回到最初的那个例子,现在我们只需导入 bus 对象,点击 aikoの詩。 专辑卡时 bus.switchToAlbumInterfaceSig.emit('aiko - aikoの詩。') 来发送切换到专辑界面的信号,然后在主界面中 bus.switchToAlbumInterfaceSig.connect(self.switchToAlbumInterface) 即可,这样就省去了信号的转发流程,代码会简洁许多。(界面的实现代码在 Groove,据说把仓库从 public 变为 private 之后 star 会被清空,别问我是怎么知道的 )以上~~
总结
相关推荐:
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
文章缩写AI:高效编辑的未来之光
AI写作免费一键生成下载,助您轻松创作!
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
ChatGPT360:全方位提升你的工作与生活效率,ai72787
SEO目标:让您的网站轻松登顶搜索引擎,优化购物网站的搜索
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
AI自动读文:让阅读更轻松、更高效的智能革命,寄ai空
SEO外链建设:提升网站排名的关键策略,ai偏执
ChatGPT不能用了?了解这一背后的真相及解决方法,ai恐怖头像
AI一键生成文章在线:提升创作效率,改变写作方式
AI仿写文章:开启内容创作新纪元
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
seo追词是什么,seo词条 ,52580609AI
seo网站自学看什么书,seo技术适合自学吗 ,斑马ai阅读
优化投入,让企业更具竞争力,怎样推广营销方案
SEO实现:如何通过SEO优化提升网站流量与排名,南京市公司网站推广
seo辅助词选什么,seo助手 ,各车企ai
SEO与SEM策略:提升网站流量与品牌曝光的双剑合璧,ai补图
seo系列什么意思,seo的分类 ,que n ai je
SEO能够助力网站流量增长,提升品牌竞争力,Seo网站排名原理
企业SEO:如何通过搜索引擎优化提升企业网络竞争力,安阳网站优化布局设计
AI优化文章:如何利用人工智能提升写作效率和质量
什么是seo快排,seo快排方案 ,ai剪图形
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
智能AI写作生成:如何借助人工智能提升创作效率与质量
软件我在AI:改变未来的智能助手
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
360优化关键词-提升网站流量与排名的秘密武器,美拍ai
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
用AI征文工具,轻松创作出精彩文章!
URL泄露:如何防止信息泄露带来的严重后果,抖音推广营销服务多少钱
为什么要监控SEO效果,国家为什么要监控个人 ,抚顺ai系统
用AI写文,开启创作新时代
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决常见问题!,ai招生广告设计
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
为什么做酒店seo,为什么做酒店 ,ai uehara下载
SEO优化关键技巧:提升网站排名的实战攻略,科大讯飞ai论文写作软件
亚马逊产品seo什么意思,亚马逊平台产品专业术语 ,小新同学ai
ChatGPT目前,我无法查看或打开附件,但我依然能为你提供全面的帮助,苹果ai谷歌ai
文章AI排版,让创作更高效的秘密武器
AI文章概括缩写:让内容高效获取的智能工具,ai 处理文件
AI文章比对技术:引领写作与内容审核的新革命,ai智能写作小说免费
WP原创:打造属于你的独特网站,从这里开始!,一个网站推广一个月需要多少钱
什么是seo反连接,网站反链多好还是少好 ,网易ai产品
为什么选择收录网站是企业在线营销的必备策略,全网营销与推广
什么是秀米?全方位了解这款微信公众号排版神器,宁波全网营销型网站建设
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子