【Qt】事件的处理

事件的处理

事件的处理,让一段代码和某个事件关联起来,当事件触发的时候,就能指定这段代码。在之前学习的信号槽是通过 connect 来完成上述关联的,对于事件来说,需要让当前的类,重写某个事件处理函数。这里使用到的是C++中的"多态"机制,创建子类,继承自Qt已有的类,在子类中重写父类事件的处理函数,后续在事件触发的过程中,就会通过多态这样的机制,执行到自己写的子类函数中。

事件处理的一般方式为:重写相关的 event 函数

例子:重写处理鼠标进入和鼠标离开

在实现⿏标的进⼊和离开事件时,直接重新实现 enterEvent() 和 leaveEvent() 即可。enterEvent() 和 leaveEvent() 函数原型如下:

  • enterEvent()
  • leaveEnter()

(1) 在Qt Designer中设置一段文本

(2)设置label边框

(3)创建QLabel的子类

(4)注意构造函数的父类

(5)重写enterEvent 和 leaveEvent

要想重写父类的函数,就需要确保在子类中重写的函数名字和函数的参数列表都完全一致(形参无所谓),注意防止单词拼写错误。【为了防止拼写错误,可以在Qt助手中直接复制过来】

(6)转换类型

当前在界面上创建的label其实是QLabel,而不是咱们自己写的label,必须确保界面上的这个label是咱们自己定义的label的实例,才会进行执行。

通过"提升为"这样的方式,就可以把Qt Designer中拖上去的控件的类型转换成自定义的控件类型

此时就说明当前的 enterEvent 和 leaveEvent 这俩个事件就被咱们给捕获到了。

(7)执行程序

例子:表白神器2.0

  • pushButton.h文件
  • pushButtton.cpp文件
  • widget.cpp文件

运行程序:

相关推荐
半杯咖啡半行码8 分钟前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
caoerzhong21 分钟前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源
时间的拾荒人23 分钟前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
MayZork41 分钟前
Qt 文件操作:QSaveFile 与 QTemporaryFile(含 QTemporaryDir)实战
开发语言·qt
北冥you鱼1 小时前
Go 语言空接口(interface{})使用场景与最佳实践
开发语言·windows·golang
xh didida1 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
垆边人似月.1 小时前
华为机试题 :两数之和
c++·算法·华为
个 人 练 习 生1 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
垆边人似月.1 小时前
华为机试题 :有效的括号
c++·算法·华为
2601_966949652 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash