每日一言

        所有的努力,都是为了让未来的自己感谢现在的你。

QShortcut

我们的记事本肯定要有通过快捷键对字体的放大和缩小进行控制的功能啊,那么我们这边就这个问题我们需要先学习一下QShortCut

我们这个类就是专门做快捷键的

老样子我们刚开始学习这个类,可以直接通过案例Detailed Description进行查看

来获得使用的灵感,

我们会发现这样写,那么我直接上代码

那么我们会发现,这个快捷键的创建一般在构造函数函数里面实现,这个是为什么呢?

综上所述,把快捷键相关代码写在构造函数里,是为了契合 Qt 中对象初始化流程、保证相关资源和环境就绪、让初始化逻辑集中清晰,以及更好地关联界面加载等,从而保障快捷键功能稳定、正常地工作 。当然,也不是绝对只能写在构造函数,后续在合适的时机(比如界面完全加载后,通过其他触发条件再动态设置快捷键 )也可以调整,但构造函数是最基础、最常用的初始化位置。

好的我们先去实现一下快捷键对记事本的打开,还有我们记事本的保存功能

我这边设置的是ctrl+0就是对文件的打开 ctrl+s就是对文件的保存

那我们会发现就这样可以了吗?实际上是没有用的,因为还需要信号的绑定,那么就是信号与槽的操作

就是信号的问题,会发现文档说,我们按下快捷键的时候会发信号,这个信号叫做activated

好的在这边我们可以直接用lambda表达式来进行信号与槽的绑定

那么我们按下快捷键ctrl+o的时候那么这个就应该出现弹窗,也就是和我们打开文件的操作是一样的,所以这边我们直接使用open的这个函数就可以了,

那么我们按下快捷键ctrl+S的时候那么这个就应该出现弹窗,也就是和我们保存文件的操作是一样的,所以这边我们直接使用save的这个函数就可以了,

那么我们这样就实现了我们想要的效果了

好的那么现在我们实现快捷键放大文字,和缩小文字也就很简单了

那么我们要先处理怎么放大文字和缩小文字

首先我们在textEdit对文字的操作肯定是QTextEdit类里面寻找答案,因为TextEdit是QTExtEdit的对象,那么我们就去寻找

然后我们会发现没有,或许我们会看到很多关于设置font的函数,但是有些是不一样的效果的,所以我们需要自己积累起来,就比如我这边的这个,专门是对于textEdit控件的字体放大,缩小的方法

我们发现这个QTextEdit里面没有找到font()这个方法,我就直接说了我们需要找到这个font()方法,我们没有在QTextEdit里面找到,那么我们就沿着继承的一个一个类继续找,最后在QWidget这个类里面找到了我们想要的方法

代码展示

这个方法的话是返回一个QFont类型的已有字体对象的引用,不会创建新的对象,也就是所有的属性,和方法都复制到我们新创建的QFont  font对象进行接收

QFont 对象包含的远不止字体大小,它是一个完整的字体描述对象,涵盖了字体的所有属性。

操作

语法

核心区别

你的代码属于

复制

QFont a = b;

创建新对象,属性来自 b

赋值

a = b;(a 已存在)

修改 a 的属性,覆盖原有值

然后我们由于知道了QFont类里面有显示字体大小的函数pointSize

返回值类型是int,所以我们用这个自定义的fontsize进行承接(返回是当前字体的大小),还有这个

if(font.pointSize()==-1return;这个完全是因为需要谨慎一点,毕竟人家说了返回-1的话就是返回错误(设置错误),所以我们需要进行判断一下

,因为我们不是信号与槽吗,所以我们是这样设计的,我们设计的是用这个快捷键的时候字体就会比上次的字体更大1号,

所以,还是值得注意的是,这边我们进行设置的时候是需要先font这个对象设置为新的字体大小后,还需要进行对textEdit的字体大小进行设置

为什么呢?可能很多人搞不懂,为什么很糊涂

因为我们的font是我们字体的所有数据,textEdit也有自己的对字体的控制的一套系统,所以我们还需要进行对textEdit的字体进行重新设置,并且也有对应的函数叫做setFont(font)  这个就是将我们font这个对象的引用传进去,

我们要知道一点,这个font是我们的字体对象,包括了字体的大小,格式、颜色等等各种属性,所以我们这边font.setPointSize这是在对我们的字体的大小做修改,所以最后setfont这个函数也是传我们新创建的这个font对象的引用,也就是所有的属性和方法,包括我们修改好的字体的大小以及等等,就等于是更换一遍属性一样,其实也是为了方便开发,因为以后会改字体的颜色、格式等等、所以直接传对象引用会省去好多代码,因为都改在对象里面了

Setfont(新数据) 等于刷新一下

我不懂你们看不看的懂,我是感觉很形象,很棒

所以啊,因此我们的对字体放大的方法就设置好了

缩小的代码也是如此

接下来我们熟悉对信号与槽的绑定,还有对快捷键的创建

我们为了减少一点构造函数的代码,我们对代码片段进行了封装也就是这个zoomIn和reduce(如下)

这样就可以实现我们想要的效果了

总体逻辑是什么呢,就是我们要知道这个QShoutcut这个类是专门对我们这个键盘上的快捷键进行创建的、让我们知道怎么创建,怎么使用都有讲解,将怎么创建的案例和还有我们按下快捷键的时候,会发送actived这个信号,所以我们需要进行信号与槽的绑定,那么槽函数的话的话就主要是我们的字体的放大和缩小,我们想要的是我们通过ctrl+shift+加号按下的时候,发送actived信号给窗口进行捕获,随后调用槽函数,那么我们这边要注意的一个点是ctrl+shift+加号 我们是想要写成ctrl + shift + + 这样写的,但是我们不能这样写,必须要写=号,和键盘的布局有关系

其实也是约定俗称的写法,真的不需要进行太多的了解,

简单说:因为 + 是 Shift + = 的结果,没有单独的 + 按键,所以快捷键里用 = 来表示这个物理按键,写成 Ctrl + Shift + = 更准确地反映了实际操作,这是行业通用的表示方法~

我们这个槽函数写字体的放大和缩小操作,那么我们有一个函数叫做font(),那么

这个font的话就是可以返回字体的所有信息了。这个font位于QWidget类里面,返回的是对象的引用,那么我们创建一个对象进行承接,所有的数据(属性和方法),随后我们又通过这个font对象进行对字体的设置,设置逻辑为,每次触发信号的时候,我就让字体字号+1,怎么加1呢,我们对font这个对象设置完之后我们还是需要对textEdit的字体进行更新的,也就是重新setFont()传的参数也是font的引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89659.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89659.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89659.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web Worker:让前端飞起来的隐形引擎

目录 Web Worker:让前端飞起来的隐形引擎 一、什么是 Web Worker? 1、为什么需要 web worker 2、什么是 web worker 二、基本使用方法 1、创建一个 Worker 文件(worker.js) 2、主线程引入并使用 三、实战案例:…

关于在VScode中使用git的一些步骤常用命令及其常见问题:

输入 gitee用户 gitee绑定邮箱git config --global user.name "automated-piggy-senior" git config --global user.email "1323280131qq.com"克隆远程库到本地 git clone https://gitee.com/automated-piggy-senior/20250717-test.git常见问题1&#xff1…

LeafletJS 性能优化:处理大数据量地图

引言 LeafletJS 作为一个轻量、灵活的 JavaScript 地图库,以其高效的渲染能力和模块化设计深受开发者喜爱。然而,当处理大数据量(如数千个标记、复杂的 GeoJSON 数据或高分辨率瓦片)时,LeafletJS 的性能可能面临挑战&…

LLM(Large Language Model)大规模语言模型浅析

参考: https://zhuanlan.zhihu.com/p/7046080918 LLM(Large Language Model)大规模语言模型,是指具有大规模参数和复杂计算结构的机器学习模型。大模型里常说的多少B, B 是 Billion 的缩写,表示 十亿,如DeepSeek满血版 671B(6710亿参数); 大模型本质上是一个使用海量…

【后端】配置SqlSugar ORM框架并添加仓储

目录 1.添加包 2.配置连接字符串 3.配置SqlSugar 3.1.添加基础类 3.2.添加方法 3.2.1.读取配置方法 3.2.2.枚举扩展方法 3.3.添加管理类(重要) 4.配置仓储 4.1.仓储接口添加 5.注册 6.使用 该文档是配置SqlSugar多租户和加仓储教程。使用 S…

全国高等院校计算机基础教育研究会2025学术年会在西宁成功举办 ——高原论道启新程,数智融合育英才

7 月16日至18日,全国高等院校计算机基础教育研究会2025学术年会在青海西宁隆重召开。大会以“数智融合,创新计算机教育”为主题,汇聚人工智能领域顶尖专家学者、高校校长、产业翘楚及一线教师300 多人,共商人工智能时代计算机基础…

AppTrace:重新定义免填邀请码,解锁用户裂变新高度

​​在移动互联网时代,​用户裂变是App增长的核心引擎,而邀请机制则是裂变的关键驱动力。然而,传统的邀请码机制——依赖用户手动输入、记忆复杂字符——已经成为用户体验的绊脚石,导致转化率下降、运营成本上升。​AppTrace​ 作…

神经网络常见激活函数 13-Softplus函数

文章目录Softplus函数导函数函数和导函数图像优缺点PyTorch 中的 Softplus 函数TensorFlow 中的 Softplus 函数Softplus 函数导函数 Softplus函数 Softplus⁡(x)ln⁡(1ex)\begin{aligned} \operatorname{Softplus}(x) & \ln \bigl(1 e^{\,x}\bigr) \end{aligned} Softplu…

深度理解 KVM:Linux 内核系统学习的重要角度

📖 推荐阅读:《Yocto项目实战教程:高效定制嵌入式Linux系统》 🎥 更多学习视频请关注 B 站:嵌入式Jerry 深度理解 KVM:Linux 内核系统学习的重要角度 作者:嵌入式 Jerry 一、为什么开发者需要学习 KVM&…

闭包的定义和应用场景

一、闭包是什么? 闭包是指函数可以“记住”并访问它定义时的词法作用域,即使这个函数在其作用域链之外执行。 简单说:函数 A 在函数 B 中被定义,并在函数 B 外部被调用,它依然能访问函数 B 中的变量,这就是…

北京-4年功能测试2年空窗-报培训班学测开-第五十四天

今天交付的成果是,初版简历虽然只写了项目部分,但用了一整天,期间联系了前司组长,拿到了性能测试报告。然后再看压测脚本,突然能看懂了,对服务端日志也能看懂些了,还找到了客户端日志怎么说呢&a…

算法训练营day24 回溯算法③ 93.复原IP地址 、78.子集、 90.子集II

今天继续回溯算法的专题,第三篇博客! 93.复原IP地址 输入:s "25525511135" 输出:["255.255.11.135","255.255.111.35"] 切割字符串为4段,当进行到第四段的时候对第四段字符串进行判断…

jeccg-boot框架实现xls模板导出功能

文章目录一、后端部分二、前端部分三、模板制作一、后端部分 //1、在application-dev.yml文件增加模板路径path :#模板路径saxls: /data/opt/saxls/ //2、控制层写法 public class sabassalController extends JeecgController<sabassalVo, IsabassalService> {Autowired…

LangChain4j入门:Java开发者的AI应用开发指南

&#x1f680; 在AI浪潮席卷全球的今天&#xff0c;Java开发者如何快速上手大语言模型应用开发&#xff1f;LangChain4j为我们提供了完美的解决方案&#xff01; 前言&#xff1a;为什么Java开发者需要LangChain4j&#xff1f; 想象一下&#xff0c;你正在开发一个企业级应用&…

相机光学(五十)——Depth AF

1.什么是Depth AFDepth AF&#xff08;景深自动对焦&#xff09;&#xff0c;也称为 Depth-of-Field AF&#xff08;景深对焦&#xff09; 或 DEP AF&#xff0c;是一种基于景深范围的自动对焦技术&#xff0c;核心目标是&#xff1a;确保从前景到背景的一整段距离都在清晰景深…

Unity 堆栈分析实战指南 C#

Unity 堆栈分析实战指南 提示&#xff1a;内容纯个人编写&#xff0c;欢迎评论点赞&#xff0c;来指正我。 文章目录Unity 堆栈分析实战指南1. 前言2. 什么是堆栈3. Unity 中的堆栈4. 堆栈分析工具5. 如何进行堆栈分析6. 实战案例分析案例 1: 性能瓶颈分析案例 2: 内存泄漏检测…

AE MDX L6 L12 L18 电源手侧操作使用说明

AE MDX L6 L12 L18 电源手侧操作使用说明

Gemini Function Calling 和 Qwen3 Embedding和ReRanker模型

Gemini API 的函数调用&#xff08;Function Calling&#xff09;功能。它解决了传统大语言模型&#xff08;LLM&#xff09;的一个关键局限&#xff1a;LLM 本身是基于训练数据的“知识库”&#xff0c;擅长生成文本和回答问题&#xff0c;但无法直接执行代码、访问实时数据或…

​​VMware Workstation Pro 17.5.0 安装教程 - 详细步骤图解(附下载+激活)​

VMware Workstation Pro 17.5.0 是一款功能强大的虚拟机软件&#xff0c;允许用户在一台计算机上同时运行多个操作系统&#xff08;如 Windows、Linux、macOS&#xff09;&#xff0c;适用于开发、测试、运维及学习环境搭建。本教程提供 ​​详细安装步骤​​&#xff0c;包括 …

端到端神经网络视频编解码器介绍

一、技术演进&#xff1a;从模块优化到全局智能的范式跃迁 传统编解码器的效率天花板&#xff08;1990-2017&#xff09; 架构局限&#xff1a;H.264/HEVC依赖手工设计的运动估计、DCT变换、熵编码模块&#xff0c;各模块独立优化导致全局效率损失。高分辨率瓶颈&#xff1a;4…