QT之事件

一、QT事件运行过程

理解一

1、QT中的事件就是中断(软中断);
2、QT中事件流程:
2.1 QT程序进入监听状态,等待事件发生,如下图
在这里插入图片描述
2.2 事件动作发生,如鼠标左击事件发生;
2.3 将事件动作转换为事件对象;
2.4 将事件对象给event()函数(事件分发函数);
2.5 event()函数又将事件对象给了switch-case或if-else语句,switch-case或if-else语句又将事件对象给了具体的事件处理函数(如果是鼠标左击事件,则会调用鼠标左击事件处理函数),最后完成对事件的响应。
注意:1、具体的事件处理函数都是虚函数;

理解二

一、第一等级:QT程序,如下图的app.exec();
二、第二等级:事件过滤器函数,eventFilter();继承于QObject基类。
三、第三等级:QT控件,如下图的QLabel、Button等;
四、第四等级:事件分发函数,event();继承于QWidget基类。
五、第五等级:事件处理函数,XXXevent();继承于QWidget基类。

事件相关函数:事件过滤器函数eventFilter()、事件分发函数event()、事件处理函数XXXevent();都是虚函数。

在这里插入图片描述

二、QT事件的接受与忽略

1、事件接受:利用accept()接受函数,接受事件后,事件就不会再往下传递,一般用于窗口的关闭。
2、事件忽略:利用ignore()忽略函数,忽略函数后,事件继续给父UI组件传递(事件不是给父类传递,而是给父组件传递)。

三、事件分发函数 event()

1、event()为虚函数;
2、event()函数的作用是过滤事件,选择想要处理的事件,屏蔽不想处理的事件;
3、如果传入的事件已被识别并且处理,则需要返回 true,否则返回 false。如果返回值是 true,那么 Qt 会认为这个事件已经处理完毕,不会再将这个事件发送给其它对象,而是会继续处理事件队列中的下一事件。
4、在event()函数中,调用事件对象的accept()和ignore()函数是没有作用的,不会影响到事件的传播。

四、事件过滤器函数 eventFilter()

1、eventFilter()为虚函数;
2、eventFilter()函数的作用是过滤事件,选择想要处理的事件,屏蔽不想处理的事件;
3、如果传入的事件已被识别并且处理,则需要返回 true,否则返回 false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值