招聘网站上怎么做推广网络营销概念
事件过滤器
在 Qt 中,⼀个对象可能经常要查看或拦截另外⼀个对象的事件,如对话框想要拦截按键事件,不让别的组件接收到,或者修改按键的默认值等。通过上⾯的学习,我们已经知道,Qt 创建了 QEvent事件对象之后,会调⽤QObject 的 event()函数 处理事件的分发。显然,我们可以在 event()函数 中实现拦截的操作。由于 event()函数是 protected 的,因此,需要继承已有类。如果组件很多,就需要重写很多个event()函数。这当然相当⿇烦,更不⽤说重写 event()函数还得⼩⼼⼀堆问题。好在 Qt 提供了另外⼀种机制来达到这⼀⽬的:事件过滤器。
事件过滤器是在应⽤程序分发到 event事件分发器 之前,再做⼀次更⾼级的拦截。
事件过滤器的⼀般使⽤步骤:
- 安装事件过滤器;
- 重写事件过滤器函数:eventfilter() 。
例子:拦截鼠标
(1)设置一个label,并设置一个边框
(2)在项⽬新添加⼀个类:Label,并将设置label提升再Label类中
(3)在 "mylabel.h" 中声明 ⿏标点击事件 和 事件分发器
(4)在 "mylabel.cpp" ⽂件中实现⿏标点击事件和事件分发器
(5)在 "widget.h" 头⽂件中声明事件过滤器函数
(6)在 "widget.cpp" ⽂件中实现事件过滤器的两个步骤
(7)运行程序