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

发布于:2025-07-20 ⋅ 阅读:(15) ⋅ 点赞:(0)

每日一言

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

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的数的

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


网站公告

今日签到

点亮在社区的每一天
去签到