Qt (16)【Qt 事件 —— Qt 事件简介 | 如何重写相关的 Event 函数】

阅读导航

  • 引言
  • 一、事件介绍
  • 二、如何重写相关的 Event 函数
    • 1. 事件的处理简介
    • 2. 示例重写鼠标相关的 Event 函数
      • (1)新建Qt项目,设计UI文件
      • (2)新添加MyLabel类
      • (3)重写enterEvent()方法和leaveEvent()方法
      • (4)提升窗口中的Lable基类
  • 总结

引言

在上一篇文章里,我们学习了Qt中窗口的基础知识,了解了如何创建和管理GUI界面。但要让这些窗口“活”起来,就需要处理用户的各种操作,比如点击、键盘输入等。这些操作在Qt中是通过事件来传达的。因此,接下来我们将深入探讨Qt的事件系统,看看它是如何捕获、传递和处理这些事件的。通过了解Qt的事件处理机制,您将能更好地控制应用程序的行为,使其更加灵活和响应迅速。让我们开始吧!

一、事件介绍

事件是在应用程序运行过程中,无论是内部还是外部发生的各种事情或动作的统称。在Qt框架中,这一概念通过具体的对象来实现,这些对象均继承自一个名为QEvent的抽象基类。

Qt事件可以大致分为两类:一类是由用户交互直接触发的,如键盘事件、鼠标事件等,它们直接响应于用户的操作;另一类则是由系统或Qt框架内部自动管理和发出的,如定时器事件,这些事件不直接依赖于用户的直接操作,而是根据系统状态或应用程序的需求自动产生。常见的Qt事件如下:

在这里插入图片描述
🎯常见事件描述

事件名称描述
鼠标事件鼠标左键、鼠标右键、鼠标滚轮,鼠标的移动,鼠标按键的按下和松开
键盘事件按键类型、按键按下、按键松开
定时器事件定时时间到达
进入离开事件鼠标的进入和离开
滚轮事件鼠标滚轮滚动
绘屏事件重绘屏幕的某些部分
显示隐藏事件窗口的显示和隐藏
移动事件窗口位置的变化
窗口事件是否为当前窗口
大小改变事件窗口大小改变
焦点事件键盘焦点移动
拖拽事件用鼠标进行拖拽

Qt通过事件处理机制,使得开发者能够灵活地对这些事件进行监听和响应,从而构建出丰富、动态的用户界面和应用程序逻辑。

二、如何重写相关的 Event 函数

1. 事件的处理简介

在Qt中,处理事件的一种常用方法是重写(Override)相关的Event函数。Qt设计了许多事件处理函数作为虚函数,这意味着开发者可以在自己的类中重新实现(即重写)这些函数来自定义事件的行为。

2. 示例重写鼠标相关的 Event 函数

实现功能:当需要处理鼠标的进入和离开事件时,可以直接在自定义的QWidget或其子类中重写enterEvent(QEvent *event)leaveEvent(QEvent *event)这两个函数

这两个函数的原型通常如下所示:

在这里插入图片描述
在这里插入图片描述

通过在自定义的类中实现这些函数,可以定义当鼠标进入或离开你的窗口或控件时应该执行的操作。

(1)新建Qt项目,设计UI文件

新建Qt项目
在这里插入图片描述
设计UI文件
在这里插入图片描述

(2)新添加MyLabel类

在这里插入图片描述
在这里插入图片描述

(3)重写enterEvent()方法和leaveEvent()方法

在这里插入图片描述
在这里插入图片描述

(4)提升窗口中的Lable基类

🎯在UI文件中选中Label,右键------>提升为…

在这里插入图片描述
🎯当点击"提升为…"之后,弹出如下对话框
在这里插入图片描述
执行效果如下:当鼠标进入设计好的标签之后,就会在应用程序输出栏中打印:鼠标进入,出来的时候也会有提示
在这里插入图片描述

总结

我们通过创建一个新的QLabel子类并重写其enterEvent()和leaveEvent()方法,我们能够在鼠标进入或离开标签时改变其行为。随后,利用Qt Designer将UI中的QLabel控件提升为我们自定义的类实例,实现了这些自定义行为的实际应用。这体现了Qt事件处理机制允许开发者轻松扩展控件功能的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535229.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

果蔬识别系统架构+流程图

相关文章和代码 果蔬识别系统 果蔬识别系统优化(1~5) 架构图 流程图 初始化 识别流程 学习流程 同步流程 与初始化类似,只是同步只同步一个storeCode数据 删除数据流程 导入数据

三、k8s中的控制器的使用

一 什么是控制器 官方文档: 工作负载管理 | Kubernetes 控制器也是管理pod的一种手段 自主式pod:pod退出或意外关闭后不会被重新创建 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目 Pod控制器是管理pod…

软件安装攻略:EmEditor编辑器下载安装与使用

EmEditor是一款在Windows平台上运行的文字编辑程序。EmEditor以运作轻巧、敏捷而又功能强大、丰富著称,得到许多用户的好评。Windows内建的记事本程式由于功能太过单薄,所以有不少用户直接以EmEditor取代,emeditor是一个跨平台的文本编辑器&a…

用SpringBoot进行阿里云大模型接口调用同步方法和异步方法

同步效果就不展示了,这里展示更常用的异步,多轮异步流式效果展示如下: 结果内容组合 1、同步版本环境准备以及代码 需要开通阿里大模型服务,如果没有开通服务,单独的去生成 key 是无效的。 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 生成你需要的 key 1、…

2.C++中程序的语法基础--关键字与分隔符

现在回过头来看上一篇中所写的程序&#xff1a; #include <bits/stdc.h> using namespace std; int main() {// 程序主体cout << "HelloWorld" << endl; return 0; } 我们会看到许多英文单词&#xff0c;像"include"、“using”&…

Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)

目录 1. 嵌套(多级)路由2. 路由query传参3. 路由命名4. 路由params传参5. props配置6. <router-link>的replace属性 1. 嵌套(多级)路由 pages/Car.vue <template><ul><li>car1</li><li>car2</li><li>car3</li></ul…

【Java面试】第七天

&#x1f31f;个人主页&#xff1a;时间会证明一切. 目录 有三个线程T1,T2,T3如何保证顺序执行&#xff1f;依次执行start方法使用join使用CountDownLatch使用线程池使用CompletableFuture Spring Bean的生命周期是怎么样的&#xff1f;Autowired和Resource的关系&#xff1f;相…

读取CSV中文件报ArrayIndexOutOfBounds异常

序言 有个需求要将csv文件入库&#xff0c;之前测试的文件都是可以正常解析入库的&#xff0c;但新提供的一个csv文件读取的时候捕获的异常信息就总是提示&#xff1a;Index 1 out of bounds for length 1。 读取csv文件的方法 public static List<Map<String, Object…

8.6小波变换(Wavelet Transform)边缘检测

实验原理 由于OpenCV本身并不直接支持小波变换&#xff08;Wavelet Transform&#xff09;&#xff0c;我们需要借助一些技巧来实现它。一种常见的方法是利用离散余弦变换&#xff08;DCT&#xff09;或离散傅立叶变换&#xff08;DFT&#xff09;来近似实现小波变换的功能。但…

【机器学习(六)】分类和回归任务-LightGBM算法-Sentosa_DSML社区版

文章目录 一、算法概念二、算法原理&#xff08;一&#xff09;Histogram&#xff08;二&#xff09;GOSS1、信息增益2、近似误差 &#xff08;三&#xff09;EFB 三、算法优缺点&#xff08;一&#xff09;优点&#xff08;二&#xff09;缺点 四、LightGBM分类任务实现对比&a…

AI基础 L21 Quantifying Uncertainty and Reasoning with Probabilities III

Bayesian Networks 1 Bayesian Networks • A Bayesian Network (BN) represents the dependencies among variables and encodes the full joint probability distribution concisely. • A BN is a directed graph, where each node is annotated with probability informati…

[项目][WebServer][CGI机制 设计]详细讲解

目录 1.何为CGI机制&#xff1f;2.理解CGI机制3.CGI接口设计1.ProcessNonCgi2.ProcessCgi 1.何为CGI机制&#xff1f; CGI(Common Gateway Interface)是外部应用程序(CGI程序)与WEB服务器之间的接口标准&#xff0c;是在CGI程序和WEB服务器之间传递信息的过程 2.理解CGI机制 …

[XILINX] 正点原子ZYNQ7015开发板!ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2,性能强悍,资料丰富!

正点原子ZYNQ7015开发板&#xff01;ZYNQ 7000系列、双核ARM、PCIe2.0、SFPX2&#xff0c;性能强悍&#xff0c;资料丰富&#xff01; 正点原子Z15 ZYNQ开发板&#xff0c;搭载Xilinx Zynq7000系列芯片&#xff0c;核心板主控芯片的型号是XC7Z015CLG485-2。开发板由核心板&…

JAVA开源项目 在线视频教育平台 计算机毕业设计

本文项目编号 T 027 &#xff0c;文末自助获取源码 \color{red}{T027&#xff0c;文末自助获取源码} T027&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…

【数据结构与算法 | 灵神题单 | 合并链表篇】力扣2, 21, 445, 2816

1. 力扣2&#xff1a;两数相加 1.1 题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可…

o1模型:引领AI技术在STEM领域的突破与应用

o1模型是OpenAI最新推出的大型语言模型&#xff0c;它在多个领域展现出了卓越的能力&#xff0c;被认为是AI技术发展的一个重要里程碑。以下是对o1模型的详细介绍和分析&#xff1a; o1模型的简介和性能评估 o1模型在物理、化学、生物学等领域的基准任务上达到了博士生水平&…

Android Studio:驱动高效开发的全方位智能平台

目录 Android Studio 1. 智能的代码编辑与自动补全 2. 快捷键与代码模板 3. 强大的调试工具 4. 实时分析与性能优化 5. 集成的 Gradle 构建系统 6. 持续集成与自动化 7. 版本控制与团队协作 8. 丰富的插件生态与定制化 9. 快速布局与 UI 设计工具 9. 即时运行&#…

数字IC设计\FPGA 职位经典笔试面试--整理

注&#xff1a; 资料都是基于网上一些博客分享和自己学习整理而成的 1&#xff1a;什么是同步逻辑和异步逻辑&#xff1f; 同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。 同步时序 逻辑电路的特点&#xff1a;各触发器的时钟端全部连接在一…

MySQL权限管理(DCL)总结

黑马程序员老师讲的非常好 第一个用户管理偏向于开发人员 第二个权限控制偏向于管理人员 但是怎么说呢&#xff0c;你毕竟学mysql了&#xff0c;都得学一学吧。只有精通&#xff0c;实力到位&#xff0c;才能被别人所认可&#xff01;

【打印管理】水印设置支持表单内容

09/11 主要更新模块概览 水印设置 拖动排序 恢复默认 其他更新 01 表单管理 1.1 【打印管理】-水印设置新增支持表单内容 说明&#xff1a; 在打印管理的水印设置中&#xff0c;原本仅支持企业名称作为水…