一、事件

前言

事件是QT的三大机制之一,一定程度上信号和槽也属于事件的一种
QT中的事件指哪些:窗口关闭,窗口显示,敲击键盘,点击鼠标左键、鼠标右键、鼠标滚轮,文件拖放等等

1、事件循环

QT中的所有事件,都是放在 "事件循环" 中,被反复执行的

本质上不是一次性的操作,而是这些事件,这些函数,被反复触发,反复执行,那么就会出现在事件循环中,被反复执行。

2、事件的本质

在QT中,所有的事件,本质上都是受保护的虚函数,发生了对应的事件,就会调用对应的受保护的函数。
所有事件函数中,都有一个事件对象,用来维护并记录事件发生的过程中所产生的数据,我们可以通过这个对象,获取事件过程中所产生的数据

void 事件(事件对象 ev){我们可以通过 "事件对象" ev 来获取事件中的数据
}

3、关闭事件和隐藏事件

1)关闭事件

事件函数:virtual void closeEvent(QCloseEvent* ev);
事件对象:QCloseEvent* ev :关闭事件中基本不产生数据,所以没啥用
发生条件:1.点击窗口的关闭键2.手动调用函数close();关闭窗口
关闭事件的特点:1.在关闭事件中,会先关闭窗口,再调用析构函数2.只有将所有的窗口都隐藏或关闭时,并且最后一个事件时关闭事件时,才会调用析构函数,并且是调用所有关闭和隐藏了的窗口的析构函数3.关闭事件是通过隐藏事件实现的

2)隐藏事件

事件函数:virtual void hideEvent(QHideEvent* ev);
事件对象:隐藏事件不产生数据,不需要调用
触发条件:1.点击窗口的隐藏键2.手动调用函数hide();隐藏窗口
隐藏事件的特点:1.隐藏事件不会调用析构函数2.如果操作的最后一个窗口触发的事件,是隐藏事件,则不论前面有没有关闭事件,都不会调用析构函数

3)关闭事件和隐藏事件的区别

无论是关闭事件还是隐藏事件,现象都是将窗口给隐藏
区别在于:
隐藏事件,无论如何都不会调用析构函数
关闭事件,会有条件的调用析构函数

4、键盘事件

1)键盘事件的槽函数

事件函数:virtual void keyPressEvent(QKeyEvent* ev);      //按下事件virtual void keyReleaseEvent(QKeyEvent* ev);    //释放事件
事件对象:获取键盘上按下的按键的值以及功能
触发条件:按下、释放键盘上的按键

2)如何获取键盘按下的按键值

QString QKeyEvent::text() const
功能:以字符串类型,返回键盘敲击的值

3)如何获取键盘按下的所有按键(包括功能按键)

int QKeyEvent::key() const
功能:可以获取键盘上按下的每一个按键,包括功能按键
返回值:是一个枚举,每个枚举值代表按下的不同按键

4)如何获取键盘按下的组合键

Qt::KeyboardModifiers modifiers() const
功能:返回按下的组合键,如果按下的不是组合键,就返回noModifier

5)键盘事件的重复触发机制

键盘的重复触发机制是指,如果按键按住,不抬起释放,就会重复触发键盘的 "按下" - "抬起" 事件,直到按键真正被释放。在键盘事件中有一个函数可以检测按键是否正在被按下,就是isAutoRepeat()

函数原型:bool QKeyEvent::isAutoRepeat() const
功能:检查是否有按键正在被按下,如果有就返回True,如果没有就返回False

5、事件过滤器

QT当中事件的流转过程如下

1. 发生物理事件;
2. 发生事件的窗口捕获该事件;
3. 将该事件交给事件过滤器,经过各种过滤以后;
4. 派发给目标窗口;
当前鼠标焦点在哪个窗口,就会派发事件给哪个窗口
如果所有窗口都不具备焦点,则派发个事件发生的窗口
5. 接收到事件的窗口调用对应的事件函数。

1)label文本框

label对象,不会被事件过滤器派发事件

2)将ui界面中某个窗口的类型,修改成我们自己写的类型

3)手动将事件派发个目标窗口

4)

6、鼠标事件

1)鼠标左键事件

2)鼠标右键事件

(1)向右键菜单栏中添加选项

7、拖放事件

1)拖放事件的触发

2)拖入事件的代码

3)释放事件的触发

4)释放事件的代码

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Vue2+Quill 的富文本编辑器全方案:功能实现与样式优化

在 Web 开发中,富文本编辑器是内容管理系统、博客平台等应用的核心组件。本文将详细介绍如何基于 Vue 和 Quill 构建一个功能完善、样式精美的富文本编辑器,重点解决字体字号选项冗长、样式不美观及功能完整性问题,提供可直接部署使用的完整方…

C#内嵌字符串格式化输出

内嵌字符串格式输出 double speedOfLight 299792.458;System.Globalization.CultureInfo.CurrentCulture System.Globalization.CultureInfo.GetCultureInfo("nl-NL"); string messageInCurrentCulture $"The speed of light is {speedOfLight:N3} km/s.&quo…

ThreeJS程序化生成城市大场景底座(性能测试)

一、简介基于矢量geojson数据构建建筑、植被、道路等,实现城市场景底座。涉及渲染的性能优化无非就是众所周知的那些事儿。视锥剔除、mesh合并、减少draw call、四叉树、八叉树、数据压缩、WebWorker、着色器优化等。下面是对东莞市数十万建筑以及海量3D树的渲染测试…

​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合

​电风扇离线语音芯片方案设计与应用场景:基于 8 脚 MCU 与 WTK6900P 的创新融合一、引言在智能家居领域蓬勃发展的当下,用户对于家电产品的智能化和便捷性需求日益增长。传统的电风扇控制方式,如按键操作或遥控器控制,在某些场景…

(第四篇)spring cloud之Consul注册中心

目录 一、介绍 二、安装 三、整合代码使用 1、创建服务提供者8006 2、创建服务消费者80 3、Eureka、zookeeper和consul的异同点 一、介绍 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。它提供了微服务系统中的服务治理…

NAT 和 PNAT

核心概念与背景 IPv4 地址枯竭: IPv4 地址空间有限(约 42.9 亿个),早已分配殆尽。NAT/PNAT 是缓解此问题的最重要、最广泛部署的技术。私有 IP 地址空间: IANA 保留了三个 IPv4 地址段专供私有网络内部使用&#xff08…

windows系统创建FTP服务

一丶开启FTP功能 控制面板->程序与功能->启用或关闭windows功能->Internet Information Services->勾选FTP服务器二丶创建FTP服务 1丶控制面板->windows工具->Internet Information Services (IIS) 管理器2丶网站->添加FTP站点->输入对应内容3丶点击新…

DeepSeek补全IBM MQ 9.4 REST API 执行命令的PPT

DeepSeek补全了我在网上找到的PPT的一页内容,帮了大忙了。人机协同,人工智能可以协助人更好的做事。下面的内容是讲解IBM MQ REST API 执行IBM MQ命令的PPT: MQSC for REST Tailored RESTful support for individual MQ objects and actions are in the …

【swift】SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案

SwiftUI动画卡顿全解:GeometryReader滥用检测与Canvas绘制替代方案一、GeometryReader的性能陷阱深度解析1. 布局计算机制2. 动画中的灾难性表现二、GeometryReader滥用检测系统1. 静态代码分析器2. 运行时性能监控三、Canvas绘制优化方案1. 基础Canvas实现2. 性能优…

悄悄话、合唱层次感:声网空间音频解锁语聊新玩法

作为语聊房主播,我曾觉得线上相聚差点意思。多人开麦时声音混杂,互动缺真实感,观众留不住,自己播着也没劲。直到平台接入声网空间音频,一切改观,观众说像在真实房间聊天,留存率涨 35%&#xff0…

【工具】多图裁剪批量处理工具

文章目录工具核心功能亮点1. 批量上传与智能管理2. 精准直观的裁剪控制3. 一键应用与批量处理为什么这个工具能提升你的工作效率?统一性与一致性保证节省90%以上的时间专业级功能,零学习成本实际应用场景电子商务摄影工作内容创作教育领域技术优势完全在…

如何提升需求分析能力

要系统性地提升需求分析能力,核心在于实现从一个被动的“需求记录员”,向一个主动的、价值驱动的“业务问题解决者”的深刻转型。要完成这一蜕变,必须在五个关键领域进行系统性的修炼与实践:培养“穿透表象”的系统思维能力、掌握…

另类的pdb恢复方式

cdb中有pdb1,pdb2 需求:希望将在线热备份pdb1的备份集a,恢复成pdb3,使得cdb中有pdb1,2,3 参考到的:RMAN备份恢复典型案例——跨平台迁移pdb - 墨天轮 ORA-65122: Pluggable Database GUID Conflicts With The GUID Of An Existi…

HarmonyOS 实战:用 @Observed + @ObjectLink 玩转多组件实时数据更新

摘要 在鸿蒙(HarmonyOS)应用开发中,实时数据更新是一个绕不开的话题,尤其是在你封装了很多自定义组件、需要多个组件之间共享和同步数据的场景里。过去我们可能会依赖父子组件直接传参或全局状态管理,但这样写会让代码…

云原生俱乐部-杂谈2

说实话,杂谈系列可能会比较少,因为毕竟大部分时间都是上的线上,迄今为止也是,和雷老师与WH的交流不是很多。这个系列仅仅是我在做其他笔记部分无聊的时候来写的,内容也没有规划过,随想随写。倒不是时间太多…

波浪模型SWAN学习(1)——模型编译与波浪折射模拟(Test of the refraction formulation)

SWAN模型编译与波浪折射模拟(Test of the refraction formulation)编译过程算例简介参数文件文件头(HEADING)计算区域和网格地形数据边界条件物理模块设置输出设置执行参数模拟结果由于工作原因,最近开始接触波浪模型&…

更换cmd背景图片

打开cmd 右击顶部,选择设置选择命令提示符,外观选择背景图像路径更改成自己的图片,然后右下角保存 设置成功

基于RobustVideoMatting(RVM)进行视频人像分割(torch、onnx版本)

发表时间:2021年8月25日 项目地址:https://peterl1n.github.io/RobustVideoMatting/ 论文阅读:https://hpg123.blog.csdn.net/article/details/134409222 RVM是字节团队开源的一个实时人像分割模型,基于LSTMConv实现,…

强制从不抱怨环境。

警世俗语:强者逆袭心法(句句穿心)环境是泥潭?那就让它开出金莲! —— 抱怨是弱者的裹脚布,行动是强者的登天梯。烂泥里也能种出摇钱树,关键看你敢不敢下手挖!老天爷发牌烂&#xff1…

MC0439符号统计

码蹄集OJ-符号统计 MC0439・符号统计 难度:黄金 时间限制:1 秒 占用内存:256 M 收藏 报错 在华容道放曹的紧张时刻,小码哥接到了一个看似微不足道却至关重要的任务:解读一条仅由小写英文字母组成的神秘字符串 s&#…