news 2026/4/18 11:10:59

Qt----事件简述

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt----事件简述

目录

  • 1,事件的概念
  • 2,事件循环
  • 3,父子控件之间事件的传递处理
  • 4,事件过滤器

1,事件的概念

定义:事件是应用程序内部发生的事情或应用程序需要知道的外部事件的结果。

事件和信号的区别:
事件是由外部向内部,信号是由内部向外部。事件先发生,信号后发生。

2,事件循环

intmain(){do_step1();do_step2();}

等待事件发生之后再退出。

intmain(){while(!is_quit()){do_step1();do_step2();}}


当我们运行程序时,会向操作系统注册回调函数,当有事件发生时,操作系统会调用回调函数,此时会记录发生的事件是那种类型的事件,然后将事件加入到一个消息队列当中,此时一个循环就会处理消息队列中存储的事件,然后根据对应事件去进行逻辑处理。

3,父子控件之间事件的传递处理



以上两个图描述的是Qt负责处理事件处理的类关系图和Qt中常用的处理事件的几种方式。

在实际的项目中会经常处理父子窗口之间的事件传递,那么事件传递的机制是怎样的呢?
以下是两个事件处理函数。

其中Widget是父窗口,MyLineEdit是子窗口。当出现事件时,说先处理子窗口,后处理父窗口。
但是以上的编码实际上在多次出现某种事件之后父窗口的事件只执行了一次。所以需要在子窗口的事件函数中添加代码 event->ignore();
此外重写处理函数时,需要调用基类的处理函数。


有的时候根据需要我们需要事件进行子窗口到父窗口的传递,有时候不需要,那么怎么控制传递呢?
event->ignore(); 允许事件进行子窗口到父窗口的传递。
event->accept(); 阻止事件进行子窗口到父窗口的传递。

4,事件过滤器

通常情况下,一个父窗口中往往会有很多子窗口,而此时发生在这个窗口中的事件需要我们去一 一 处理,很多时候我们需要分清楚这个事件是发生在哪个子窗口中的,这个时候我们就需要事件过滤器去帮助我们判断。

假设我们的父窗口类为 Widget 子窗口类为 MyLineEdit 。

应用事件过滤器,首先要重写
bool QObject::eventFilter(QObject *watched, QEvent *event);函数
其次还要给主窗口安装事件过滤器,
ui->lineEdit->installEventFilter(this);在这个示例里面表示是一个名为lineEdit控件安装事件过滤器。

示例:

bool Widget::eventFilter(QObject*watched,QEvent*event){if(watched==ui->lineEdit){if(event->type()==QEvent::KeyPress){//进行相应逻辑处理}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 7:05:39

岩土颗粒粗糙度计算,采用傅里叶展开。 matlab源代码 生成颗粒均方根粗糙度,算术平均粗糙度

岩土颗粒粗糙度计算,采用傅里叶展开。 matlab源代码 生成颗粒均方根粗糙度,算术平均粗糙度。 方法来自《非规则颗粒形态表征与离散元模拟方法的研究》清华大学出版社 matalb源代码傅里叶展开在岩土颗粒形态分析中的应用挺有意思。咱们今天直接上干货&…

作者头像 李华
网站建设 2026/4/18 7:37:36

GTN损伤模型在金属成型中的实战改造手记

修正的考虑剪切和静水压力的各向异性和各向同性 GTN 模型 Abaqus_Vumat 子程序以及跑通的案例,包括 三个子程序 for 文件(各向同性,自己推导修改以及各向异性) 、cae 文件和 inp 文件等,还有一些论文资料。 注&#x…

作者头像 李华
网站建设 2026/4/18 8:17:13

怎么清洗角膜塑形镜才有效?

在本文中,我们将深入探讨如何有效清洗OK镜,确保其保持最佳性能。清洗不仅能延长镜片的使用寿命,还能避免细菌的滋生,从而保护眼睛健康。此外,在使用角膜塑形镜时,家长需特别关注孩子的使用注意事项&#xf…

作者头像 李华
网站建设 2026/4/18 10:23:56

leetcode56.合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例 1: 输入:intervals [[1,3],…

作者头像 李华
网站建设 2026/4/18 8:08:50

云手机存在哪些技术瓶颈

云手机需在服务器上虚拟化出与真实手机一致的运行环境,目前多采用 ARM 服务器方案,但相关技术迁移尚未完全普及,仍存在硬件功耗、能效比等方面的问题,且对移动端应用的兼容性有待提升,可能出现游戏渲染卡顿、多任务切换…

作者头像 李华
网站建设 2026/4/18 5:22:41

从关系型数据库到时序数据库的思维转变

一、核心范式转变:从“实体关系”到“时间流事件” 维度关系型数据库 (RDBMS)时序数据库 (TSDB)核心抽象​实体与关系。世界由“学生”、“订单”、“产品”等实体构成,通过外键关联。带时间戳的测量流。世界是持续变化的“指标”,如“CPU温…

作者头像 李华