Qt ------ 覆盖eventFilter(),捕获组件事件,事件处理
2017-11-10 17:36
274 查看
在Qt中,当一个事件发生时(例如鼠标点击或某个键盘上的按键按下),其传递顺序如图所示。从这个图可以看出,事件过滤器首先获得事件,其次才是部件的 event 函数,最后是部件的事件处理函数
事件过滤器由QObject类中的两个函数来实现。
一个是 installEventFilter,它负责在相应部件上安装事件过滤器,其声明为:
void QObject::installEventFilter(QObject *filterObj);
其中,filterObj参数表示要在其上实现事件过滤器函数的部件。请注意,如果我们在一个部件安装了事件过滤器,一般在其父控件上实现事件过滤器函数。
第二个函数是 eventFilter 函数,我们在此函数中实现事件过滤器。请注意:该函数在 QObject 类中声明为一个虚函数,因此只能由 QObject 的子类继承使用
例子:
事件过滤器由QObject类中的两个函数来实现。
一个是 installEventFilter,它负责在相应部件上安装事件过滤器,其声明为:
void QObject::installEventFilter(QObject *filterObj);
其中,filterObj参数表示要在其上实现事件过滤器函数的部件。请注意,如果我们在一个部件安装了事件过滤器,一般在其父控件上实现事件过滤器函数。
第二个函数是 eventFilter 函数,我们在此函数中实现事件过滤器。请注意:该函数在 QObject 类中声明为一个虚函数,因此只能由 QObject 的子类继承使用
例子:
相关文章推荐
- QT事件过滤器(QT事件处理的5个层次:自己覆盖或过滤,父窗口过滤,Application过滤与通知)
- Qt中事件处理的方法(三种处理方法,四种覆盖event函数,notify函数,event过滤,事件处理器。然后继续传递给父窗口。可观察QWidget::event的源码,它是虚拟保护函数,可改写)
- Qt 事件处理 快捷键(重写eventFilter的函数,使用Qt::ControlModifier判断)
- 滚动条QScroolBar实现滚屏功能(屏幕过大,覆盖wheelEvent来处理滑轮事件)
- GUI组件和事件处理
- Qt中事件处理的方法和实例
- 给你的组件加一个处理事件的属性
- Qt提升子部件的办法&如何重写提升后部件的事件处理函数
- android之实现各个组件点击事件处理
- Qt获得焦点和失去焦点处理事件 (Focus事件)
- Qt 子widget嵌套在父widget里面怎么样捕获键盘事件
- 18. JAVA 图形界面 Part 2(JTextComponent、事件处理、单选按钮、复选框、列表框、下拉列表框、菜单组件、文件选择) ----- 学习笔记
- 一起看代码来玩玩QT之06EventFilter (事件过滤)
- 初步剖析QT事件处理过程(Windows)(上)
- Qt的事件处理和定时器解析
- javascript事件处理方式之捕获冒泡
- qt之键盘、鼠标事件处理
- Java 组件及事件处理实训 实训2:编写一个窗体程序,用于计算一元二次方程
- ASP.NET3.5控件和组件开发:高效事件的处理
- 03组件的生命周期和事件处理