理解QT中事件处理器和事件过滤器

最近做一个小项目发现自定义的一些控件需要有特殊的要求,但是Qt的信号与槽中间又没有定义需要的信号,所以就需要自定义控件,重构它的一些事件处理器使其达到我们的需求

Qt中事件处理的方式,最常用的就是使用事件处理器(event handler)和事件过滤器(event filter)这两种方法。但是我看网上很多都是照搬书上的原话来解释的,实在是很难理解,所以特此记录一下自己的理解。

一:事件处理器

QT中其实为每一种常见的事件类型都提供了相应的事件处理器。当我们要自定义控件一些需求的时候就可以捕获某种类型的事件并进行处理,只需要在定义的控件中重写这些事件处理器就好。常见的事件类型和对应的事件处理器如下所示:

QEvent::None - 不是一个事件。
QEvent::Accessibility - 可存取性信息被请求。
QEvent::Timer - 规则的定时器事件,QTimerEvent。
QEvent::MouseButtonPress - 鼠标按下,QMouseEvent。
QEvent::MouseButtonRelease - 鼠标抬起,QMouseEvent。
QEvent::MouseButtonDblClick - 鼠标再次按下,a href=“qmouseevent.html”>QMouseEvent。
QEvent::MouseMove - 鼠标移动,QMouseEvent。
QEvent::KeyPress - 键按下(举例,包括Shift)QKeyEvent。
QEvent::KeyRelease - 键抬起,QKeyEvent。
QEvent::IMStart - 输入法写作开始。
QEvent::IMCompose - 发生输入法写作。
QEvent::IMEnd - 输入法写作结束。
QEvent::FocusIn - 窗口部件获得键盘焦点,QFocusEvent。
QEvent::FocusOut - 窗口部件失去键盘焦点,QFocusEvent。
QEvent::Enter - 鼠标进入窗口部件边缘。
QEvent::Leave - 鼠标离开窗口部件边缘。
QEvent::Paint - 屏幕更新所需要的,QPaintEvent。
QEvent::Move - 窗口部件位置改变了,QMoveEvent。
QEvent::Resize - 窗口部件大小改变了,QResizeEvent。
QEvent::Show - 窗口部件被显示到屏幕上,QShowEvent。
QEvent::Hide - 窗口部件被隐藏,QHideEvent。
QEvent::ShowToParent - 一个子窗口部件被显示。
QEvent::HideToParent - 一个子窗口部件被隐藏。
QEvent::Close - 窗口部件被关闭(永久性地) QCloseEvent。
QEvent::ShowNormal - 窗口部件应该按通常模式显示。
QEvent::ShowMaximized - 窗口部件应该按最大化模式显示。
QEvent::ShowMinimized - 窗口部件应该按最小化模式显示。
QEvent::ShowFullScreen - 窗口部件应该按全屏模式显示。
QEvent::S

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值