当前位置: 首页 > news >正文

学习C++、QT---29(QT库中QT事件的介绍和用了几个案例来对事件怎么使用的讲解)

每日一言

        成长是一场孤独的旅行,但终点的风景会治愈所有疲惫。

QT事件

讲实话我就通过我学完事件我有自己简单的看法,就是我们的事件的话都在这边了,基本上是包括什么鼠标事件、键盘事件、各种事件,但是这些事件都是已经被QT官方定义好的,也就是我们不能自己去创建一个没有的事件

就像这边,我们的事件都是在QWidget类里面全部都在这里了,而且我们要知道事件是protected属性的

那么事件有什么作用呢??

其实事件的引入也就是为了让我们重写时间,完成一些默认没有的操作,丰富我们的功能的效果,就比如我们的鼠标点击的时候,默认情况下是不会显示任何其他效果的,但是我们重写鼠标点击事件的话,那么我们就可以让原有的变得不一样,比如现在变成点击的时候控制台输出字母ABC,或者是各种不同的效果,这个就是重写事件的好处,以及我们对引入事件这个概念的原因

那么我们要怎么重写事件呢?

我再这边重写了5个事件,知道为什么可以重写吗,因为事件都是虚函数

那么我们需要在这个Widget.h这边先重写定义,然后我们可以光标放在函数上面,ALT+ENter这样就可以快捷的选择在widget.cpp中添加实现

我这个5个事件分别叫做 关闭事件、窗口大小变化事件、鼠标进入窗口的事件、鼠标离开窗口事件、滚轮事件

这个就是我重写后添加的一些功能,在关闭事件里面,我添加了一个弹窗,这个

也就是我们看到的正常的软件都会有的操作,然后这个event->acept 和这个event->ignore是什么意思呢

  • accept() → “允许关门”:事件被接受,门会关闭(执行关闭逻辑)。
  • ignore() → “拒绝关门”:事件被忽略,门保持打开(不执行关闭逻辑)。

等于是我们点击这个yes就会关闭,no就不会关闭,在内部实现为yes的时候接受事件,执行关闭的逻辑,no为不接受事件,不执行关闭

然而我们是不是会研究为什么会关闭,我也没有实现关闭啊,就是不懂因为:

窗口关闭的具体操作(如销毁窗口、释放资源)是 Qt 内部预先实现的默认逻辑。accept() 和 ignore() 的作用是 “授权” 或 “拒绝” Qt 执行这个默认逻辑 —— 这也是框架设计的便利性所在:开发者不需要重复编写通用功能,只需要通过简单的接口控制流程即可。

resizeEvent这个事件就是我们拉动窗口的时候,会出现一些数据,那么我们默认是不捕获的,那么我们可以去捕获一下

所以我们找到这个内部的方法,有个叫做oldsize和size这两个函数,这个是什么意思呢就我直接上代码

这个size就是返回新的窗口的数据,也就可以看作为窗口的长和宽了,这个oldsize就是上一次的数据,size是最新数据

接下来值的讲的就是这个滚轮事件,当我们不懂滚轮事件能干嘛的时候,我们就可以找到这个类里面有很多的方法,这边就有一个方法很好用

我们会发现有个angleDelta这个函数是用于反馈滚轮的,当我滚轮往上滚那么就返回120,往下滚就返回-120,

对吧当然这边也有一个x()和y()是专门返回QPoint类型的x的数和y的数的

另外几个事件就不值得讲了,因为都看得懂,面向对象的好处就是程序员的命名会可读性很高,很容易理解这个函数的大概信息是什么。

http://www.dtcms.com/a/287609.html

相关文章:

  • lvs原理及实战部署
  • Linux内核设计与实现 - 第5章 系统调用
  • CS231n-2017 Lecture3线性分类器笔记
  • 什么是 Git 的钩子 Hooks?包括哪些内容?
  • picoCTF 2024: [[NoSQL]] Injection - Writeup
  • K8s与Helm实战:从入门到精通
  • 【杂谈】硬件工程师怎么用好AI工具做失效分析
  • 图像缩放的双线性插值算法
  • Keepalived 监听服务切换与运维指南
  • Redis常见线上问题
  • 如何实现电脑自动关机与定时任务管理
  • MySQL 深度性能优化配置实战指南
  • UGUI 性能优化系列:第三篇——渲染与像素填充率优化
  • Redis性能测试全攻略:工具实操与性能优化指南
  • python conda 包管理工具 隔离环境
  • Ubuntu 22.04.3 LTS 安装 MySQL
  • 【数据结构初阶】--双向链表(二)
  • 基于单片机病床呼叫系统/床位呼叫系统
  • 【自用】JavaSE--集合框架(一)--斗地主案例
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现动物分类(C#源码,UI界面版)
  • Python 常见库分类介绍及安装方法
  • 数据库第四次作业
  • 爬虫小知识三:selenium库
  • ElasticSearch:商品SKU+SPU实现join查询,设计及优化
  • 基于Eureka和restTemple的负载均衡
  • gitlab私有化部署
  • 月舟科技近调记录
  • Kotlin内联函数
  • 访问 gitlab 跳转 0.0.0.0
  • Kotlin泛型约束