欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Qt-系统事件相关介绍(56)

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

2024/10/25 20:27:00 来源:https://blog.csdn.net/weixin_67595436/article/details/142849190  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com