[QT] QT事件与事件重写

一.事件

事件(event)是由系统或者 Qt本身在不同的场景下发出的。当用户按下鼠标、敲下键盘,或者是窗口关闭等都会发出一个相应的事件。

一些事件在用户操作时 发出(如鼠标/键盘事件);

另一些事件则是由系统自动发出(如计时器事件)。

Qt窗口中对于产生的一系列事件都有默认的处理动作,如果我们有特殊需求就需要重写事件的处理动作,比如信号与槽就是一种。

每一个Qt应用程序都对应一个唯一的 QApplication应用程序对象,当调用这个对象的exec()函数时,Qt框架内部就开始了循环的事件检测。

当事件产生之后,事件会经过:事件派发>事件过滤->事件分发->事件处理 几个阶段。

二.事件重写

头文件定义
事件处理函数实现

三.事件自定义按键

如下,自定义按钮类。通过重写部分事件实现部分功能

头文件
源文件

自定义控件使用信号槽:

在ui文件中将widget提升为自定义的mybutton类后,即可使用自定义控件

先前提到,信号槽机制,其实是一种事件处理的集成,因为先前对于MousePressEvent进行了重写,所以直接使用clicked信号会与按下事件产生冲突,所以此信号槽函数失效

为了正常使用此功能,需要在对MousePressEvent事件的处理函数中手动添加emit click()

四. 案例:利用事件实现Ctrl+滚轮 实现字体大小放缩

(两种方法,1.重写事件处理函数 2.重写事件过滤器eventfilter)

1.重写事件处理函数


2.重写事件过滤器

相关推荐
扶尔魔ocy4 分钟前
【qt openGL入门笔记】OSG实现显示飞机模型飞行的点迹(二)
qt·opengl·osg
青春逝如流水10 分钟前
Java 线程与操作系统、硬件的关系:状态、映射与差异
java·开发语言·多线程·ai文章
谢亮_vipxieliang13 分钟前
Go gRPC基础与实战
开发语言·后端·golang
Aurorar0rua36 分钟前
CS50 x 2024 Notes Data structures - 08
c语言·开发语言·学习方法
企业数字化笔记41 分钟前
新租户注册成功却不能用?开通状态、初始化恢复与可用性验收
开发语言·python
瑶山44 分钟前
Windows + WSL2 Ubuntu + VS Code配置C++开发环境
开发语言·c++·windows·vscode·wsl
Vertira1 小时前
C# 函数封装成 DLL,
开发语言·c#
开开心心就好1 小时前
一元二次方程求解工具,答案带详细步骤
java·服务器·开发语言·算法·pdf·ocr·perl
cc5725026531 小时前
2027校招:大数据管理与应用专业做数据治理,技术之外还要准备什么?
java·开发语言
青春逝如流水1 小时前
Java 线程池的创建方式、注意要点与任务类型判断
java·开发语言·线程池·多线程·ai文章