1.变乱和信号槽固然功能相似但是不是一个东西,变乱是QObject的罗列,更倾向于组件通用,信号槽则更有针对性,每个组件有差别的信号
2.变乱过滤器是在变乱相应前面加了一道过滤网,可以在这道过滤网中预处理惩罚,处理惩罚完后可以继续放已往继续处理惩罚,也可以不再处理惩罚,与返回值相干
3.变乱过滤器只须要继续QObject类,只须要重写bool eventFilter(QObject *watched, QEvent *event)即可成为一个变乱过滤器
4.变乱过滤器的QEvent *event是输入的变乱的基类,可以通过dynamic_cast转换以得到更多可实行方法
5.须要举行过滤的对象须要调用- void installEventFilter(QObject *filterObj);
复制代码 方法就能绑定到变乱过滤器,变乱发生时先辈入过滤器使用
接下来展示变乱过滤器的使用方法,写一个拦截键盘输入的步调
1.新建继续QObject类filter,重写变乱过滤器函数- bool eventFilter(QObject *watched, QEvent *event) override;
- //参数为发生事件的对象类型和发生的事件
复制代码
辨认变乱发生是否是输入栏,是否是按键按下,假如是按键按下则打印到调试框
widget中添加一个输入栏,创建过滤器对象调用其方法installEventFilter将对象添加到变乱过滤器
实行,在输入框输入数据
可以看到输入框并没有数据,由于我们打印按键后返回的是true,代表变乱已处理惩罚完成,不须要调用组件默认的变乱处理惩罚。假如改为返回false
由于返回了false,体系判断未处理惩罚,以是输入栏实行了输入栏默认的变乱处理惩罚函数
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |