Qt-系统事件相关介绍(56)

目录

前言

事件介绍

处理事件

处理鼠标进出事件

准备

创建一个子类

确保重写的名称一致 

提升控件


前言

分步介绍 Qt 里面封装的各种 系统API

事件介绍

事件是应⽤程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使⽤⼀个对象来表⽰⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本⾝在不同的时刻发出的。当⽤⼾按下⿏标、敲下键盘,或者是窗⼝需要重新绘制的时候,都会发出⼀个相应的事件。⼀些事件是在⽤⼾操作时发出,如键盘事件、⿏标事件等,另⼀些事件则是由系统本⾝⾃动发出,如定时器事件。常⻅的 Qt 事件如下:

信号槽是qt对事件的封装

但是当一些事件,QT中并没有相应的信号和信号槽的时候,就相应程序员自己去设计了,这也是我们学习事件的主要原因

常见的事件

⿏标事件⿏标左键、⿏标右键、⿏标滚轮,⿏标的移动,⿏标按键的按下和松开
键盘事件按键类型、按键按下、按键松开
定时器事件定时时间到达
进⼊离开事件⿏标的进⼊和离开
滚轮事件⿏标滚轮滚动
绘屏事件重绘屏幕的某些部分
显⽰隐藏事件窗⼝的显⽰和隐藏
移动事件窗⼝位置的变化
窗⼝事件是否为当前窗⼝
⼤⼩改变事件窗⼝⼤⼩改变
焦点事件键盘焦点移动
拖拽事件⽤⿏标进⾏拖拽

处理事件

利用多态去重写处理事件的函数

处理鼠标进出事件

准备

当鼠标进入\离开某块区域的时候触发事件,我们将其处理函数进行重写即可实现我们想要的处理结果

重写 QWidget::enterEvent 和 QWidget::leaveEvent

 创建一个 label 来充当我们的指定区域,加上边框

创建一个子类

填写好子类名字,还有继承的父类名字 

调整好子类的构造函数

 

确保重写的名称一致 

小心不要写错了,Qt中没有提示,没有把握可以直接从文档中复制,当拼写正确的时候,会自动斜体,这一点也可以帮助我们判断是否拼写正确

enterEvent 

leavaEvent 

 

图下我们就重写了 enterEvent 和 leaveEvent 函数,但是我们并没有看到我们重写的函数有被触发,这是因为有一个很重要的一步没有修改 

这是因为我们在界面中使用的 Label 是 Qt 内部提供的,并不是我们所自定义的,我们需要将其换成我们所写的 

提升控件

这一点 Qt 也已经帮我们做了处理,我们直接使用 提升为 即可

还是一句话,不要拼写错了哦 

 

添加后,再点击 提升 即可 

 

右上角可以看到已经更改过来了 

 

修改之前的代码

label.h

label.cpp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风玉骨

爱了!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值