C++ QT设计模式:责任链模式
基本概念
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,将请求沿着处理链传递,直到有一个对象能够处理为止。
实现的模块有:
- Handler(处理者):定义一个处理请求的接口。
- ConcreteHandler(具体处理者):实现了处理者接口,判断自己是否能够处理请求,如果不能将请求传递给下一个处理者。
- Request(请求):封装了请求的信息,通常作为处理者方法的参数传递。
使用场景
- 当需要将请求的发送者和接收者进行解耦时。
- 当有多个对象可以处理同一请求,但不确定哪个对象应该处理时。
- 当需要动态指定处理请求的顺序时。
实现
QT源码:事件系统
QT的事件处理系统同样用到了事件处理系统,其中事件通过事件队列发送到对应的对象,每个对象都可以处理该事件,如果该对象无法处理,将会发给下一个对象。
以下是 QAppliaction 发送鼠标事件给 QWidget 的部分源码:
//接收鼠标事件的对象w
QWidget* w = static_cast<QWidget *>(receiver);
//鼠标事件e
QMouseEvent* mouse = static_cast<QMouseEvent*>(e);......while (w) {//创建一个新的鼠标事件对象,用于在对象树中传播鼠标事件QMouseEvent me(mouse->type(), relpos, mouse->windowPos(), mouse->globalPos(),mouse->button(), mouse->buttons(), mouse->modifiers(), mouse->source());......//如果鼠标事件被接受,打破循环eventAccepted = (w == receiver ? mouse : &me)->isAccepted();if (res && eventAccepted)break;......//如果鼠标事件未被接受,将w设置为w的父组件,继续循环w = w->parentWidget();
}
可以看出, QApplication 将鼠标事件沿着对象树传递,直到有一个对象能够处理为止,符合责任链模式的思想,其中:
- QObject:Handler(处理者),定义一个处理鼠标事件的接口。
- QWidgt:ConcreteHandler(具体处理者),实现了 QObject 的接口,判断自己是否能够处理鼠标事件,如果不能将请求传递给父类 QWidget。
- QMouseEvent:Request(请求),封装了鼠标事件的信息。
- QAppliaction:客户端,是请求的发起者。
相关文章:
C++ QT设计模式:责任链模式
基本概念 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,将请求沿着处理链传递,直到有一个对象能够处理为止。 实现的模块有: Handler(处理者):定义一个处理…...
基于springboot+mybatis+vue的项目实战之(后端+前后端联调)
步骤: 1、项目准备:创建数据库(之前已经创建则忽略),以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件,并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …...
【教程向】从零开始创建浏览器插件(六)实战篇
【教程向】从零开始创建浏览器插件(六)实战篇 在这篇文章中,我们将详细介绍一个名为“摸鱼King”的Chrome扩展程序的开发思路。这个扩展程序的主要功能是在用户浏览网页时提供便捷的方式来摸鱼看小说。 完整的工程我放在了完整工程,可以下载下来自己试一试。 1. 主要功能…...
如何用 OceanBase做业务开发——【DBA从入门到实践】第六期
当应用一款新的数据库时,除了基础的安装部署步骤,掌握其应用开发方法才是实现数据库价值的关键。为此,我们特别安排了5月15日(周三)的《DBA 从入门到实践》第六期课程——本次课程将带大家了解OceanBase数据库的开发流…...
Element-UI快速入门
作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目:CSDN主页YAML墨韵 学如逆水行舟,…...
【JavaWeb】网上蛋糕商城后台-商品管理
概念 本文讲解和实现网上蛋糕商城的后台管理系统中的商品管理功能。 商品列表 点击后台管理系统的head.jsp头部的“商品管理”功能选项,向服务器发送请求/admin/goods_list 因此需要在servlet包中创建AdminGoodsListServlet类,用于获取商品信息列表 …...
Django Admin后台管理:高效开发与实践
title: Django Admin后台管理:高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 tags: DjangoAdmin模型管理用户认证数据优化自定义扩展实战案例性能安全 第1章:Django Admin基础 1.1 Django Admin简介 Dj…...
Centos7网卡启动失败(Failed to start LSB: Bring up/down)
好雨知时节 当春乃发生 随风潜入夜 润物细无声 报错内容 启动虚拟机时,Ceotos的虚拟网卡没有一起启动,导致服务无法正常使用 查询网络启动状态 systemctl status network.service报Failed to start LSB: Bring up/down 查看网络启动日志 journalctl…...
【NOIP2008普及组复赛】 题4:立体图
题4:立体图 【题目描述】 小渊是个聪明的孩子,他经常会给周围的小朋友讲些自己认为有趣的内容。最近,他准备给小朋友讲解立体图,请你帮他画出立体图。 小渊有一块面积为mn的矩形区域,上面有mn个边长为1的格子&#…...
【Leetcode每日一题】 动态规划 - 简单多状态 dp 问题 - 删除并获得点数(难度⭐⭐)(76)
1. 题目解析 题目链接:LCR 091. 粉刷房子 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 1. 状态定义 在解决这类问题时,我们首先需要根据题目的具体要求来定义状态。针对房屋粉刷问题&#…...
Windows---CMD常用指令大全
CMD是什么? Windows操作系统中的命令行界面程序,全称为命令提示符 CMD可以干什么? 允许用户在文本界面下输入命令来执行各种操作,如文件管理、系统设置、软件安装等 帮助用户更好地控制和管理Windows系统 windows系统CMD指…...
消息中间件是什么?有什么用?常见的消息中间件有哪些?
1.什么是消息中间件? 消息中间件基于队列模型在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统。 2.现实中的痛点: 1.Http请求基于请求与响应的模型,在高并发的情况下,客户端发送大量的请求达到服务器端…...
富锂锰基材料极具发展潜力 我国产业化进程加速
富锂锰基材料极具发展潜力 我国产业化进程加速 富锂锰基材料以锰元素为主,我国锰资源较丰富,相比于铁锂材料、高镍三元材料,富锂锰基材料具有一定的降本潜力。此外富锂锰基材料在能量密度、充放电倍率等方面也具有明显优势。富锂锰基材料是富…...
聚水潭和金蝶云星空单据接口对接
聚水潭和金蝶云星空单据接口对接 对接系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造…...
OpenAI深夜震撼发布最新模型GPT-4o,送上最快速便捷教程
北京时间5月14日凌晨,有人说OpenAI一夜改变了历史。 在我们的深夜、太平洋时间的上午 10 点,OpenAI 召开春季发布会,公布了最新的GPT-4o模型,o代表Omnimodel(全能模型)。20多分钟的演示直播,展…...
没有申请域名的情况下,用navicat远程连接我们的服务器的Mysql数据库
我们可以根据公网ip用shell来远程连接 首先我们打开自己买的服务器 例如你看这个,就是我们的公网IP 如果服务器里面没有安装mysql数据库的话,那么我们可以用一个轻量级的docker来安装数据库代替一下 我们用docker弄个轻量级的mysql5.7.36,…...
Hive中小文件过多的几种处理方式
1、使用concatenate(只支持RCFile和ORC格式) 2、减少map数量,调整参数:输入合并文件相关的参数 3、减少reduce的数量(例如直接设置reduce为xx个、或者设置reduce的大小,系统自动根据大小确定reduce的个数…...
用户登录认证和权限授权(SpringSecurity、JWT、session)
文章目录 前言一、登录认证1. 问题引入2. Session2.1 实现原理2.2 过滤器Filter2.3 上下文对象 3. JWT3.2 实现步骤3.3 拦截器 HandlerInterceptorAdapter3.4 上下文对象 4. Session VS JWT 二、权限授权1. 权限类型1.1 页面权限(菜单项权限)1.2 ACL模型…...
第十二届蓝桥杯省赛真题 Java A 组【原卷】
文章目录 发现宝藏【考生须知】试题 A: 相乘试题 B: 直线试题 C : \mathrm{C}: C: 货物摆放试题 D: 路径试题 E: 回路计数试题 F : \mathrm{F}: F: 最少砝码试题 G: 左孩子右兄弟试题 H : \mathrm{H}: H: 异或数列试题 I \mathbf{I} I 双向排序试题 J : \mathrm{J}: J: 分…...
工作随机:linux 挂载LVM管理模式的磁盘
文章目录 前言一、创建一个分区二、创建PV三、创建VG四、创建LV五、格式化并挂载目录 前言 在数据库管理中,常有比较头疼的问题,就是一段时间发展后我的磁盘空间不够了,想要扩容原有的目录很是头疼,那么LVM管理的优势就体现出来了…...
vector收尾
vector深度剖析及模拟实现使用memcpy拷贝问题int main() { bite::vector<bite::string> v; v.push_back("1111"); v.push_back("2222"); v.push_back("3333"); return 0; }问题分析: memcpy是内存的二进制格式拷贝,…...
WorkshopDL:跨平台Steam创意工坊下载解决方案技术解析
WorkshopDL:跨平台Steam创意工坊下载解决方案技术解析 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 功能价值:跨平台模组管理的核心优势 WorkshopDL作…...
原神抽卡模拟器:无需安装也能精准规划资源?浏览器端祈愿体验全解析
原神抽卡模拟器:无需安装也能精准规划资源?浏览器端祈愿体验全解析 【免费下载链接】Genshin-Impact-Wish-Simulator Best Genshin Impact Wish Simulator Website, no need to download, 100% running on browser! 项目地址: https://gitcode.com/gh_…...
Xbox手柄电量监控:告别游戏中断的终极解决方案
Xbox手柄电量监控:告别游戏中断的终极解决方案 【免费下载链接】XB1ControllerBatteryIndicator A tray application that shows a battery indicator for an Xbox-ish controller and gives a notification when the battery level drops to (almost) empty. 项目…...
深入解析LSPosed框架:5个实战技巧提升Android Hook开发效率
深入解析LSPosed框架:5个实战技巧提升Android Hook开发效率 【免费下载链接】LSPosed_mod My changes to LSPosed 项目地址: https://gitcode.com/GitHub_Trending/ls/LSPosed_mod LSPosed是Android生态中革命性的Hook框架,为开发者提供了在不修改…...
STM32CubeMX实战:如何用通用定时器精准实现微秒级延时(附DHT11读取示例)
STM32CubeMX实战:通用定时器实现微秒级延时的工程化解决方案 在嵌入式开发中,精确的时序控制往往是项目成功的关键。许多传感器如DHT11温湿度模块、超声波测距模块HC-SR04等,都需要微秒级精度的延时操作。然而,STM32CubeMX默认提…...
从大地到天空:无人机姿态解算中的旋转矩阵实战
1. 旋转矩阵:无人机姿态解算的"翻译官" 当你操控无人机从地面腾空而起时,其实发生了一场精密的"坐标系对话"。GPS告诉你"当前位置在东经116度、北纬40度",IMU传感器却汇报"机体正在以X轴倾斜15度飞行&qu…...
告别Dijkstra的无力感:手把手教你用Bellman-Ford算法搞定带负权边的图(附C++代码与避坑指南)
突破Dijkstra的局限:Bellman-Ford算法在负权图中的应用实战 当我们需要在图中寻找最短路径时,Dijkstra算法通常是首选工具。然而,当图中存在负权边时,这个经典算法就会失效。想象一下网络路由中某些链路可能提供奖励积分…...
从按键消抖到I2C总线:一个上拉电阻,在STM32 GPIO配置里到底有多少种玩法?
从按键消抖到I2C总线:一个上拉电阻,在STM32 GPIO配置里到底有多少种玩法? 第一次接触STM32开发板时,看到GPIO配置选项里的"上拉输入"、"开漏输出"这些专业术语,相信不少初学者和我当初一样感到困惑…...
微信数据解密技术全解析:从原理到合规应用
微信数据解密技术全解析:从原理到合规应用 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 合规使用声明 本文所介绍的技术与工具仅适用于个人合法拥有的数据管理场景。使用者必须确保:1) 仅对本人所…...
