Qt学习之路(9):事件过滤器
来源:互联网 发布:dm500s接收机 淘宝 编辑:程序博客网 时间:2024/06/05 03:32
首先简单描述一下事件过滤器,事件过滤器可以让我们对事件进行一些我们感兴趣的操作,它是QObject的函数,但是在QObject里面是一个空的函数体.我们需要重写这个函数,这样可以将一些我们感兴趣的操作进行过滤.
比如文本编辑框,我们可以在MainWindow上重写这个过滤器,然后调用
text->installEventFilter(this);
这样文本编辑框的事件在分发之前就会先过滤.
下面的代码是用来过滤tab键的.如个没有这个代码,我们按下tab键会让鼠标退格,但是现在不会,并且在控制台输出语句.
bool MainWindow::eventFilter(QObject* obj,QEvent* event){ if(obj == text)//如果事件是从text传过来 { if(event->type()==QEvent::KeyPress)//如果这个事件是按键类型的 { auto KeyEvent = static_cast<QKeyEvent*>(event);//强制转换,event是没有key()函数的 if(KeyEvent->key()==Qt::Key_Tab)//如果按键时tab { qDebug()<<"press Tab key"; return true;//成功过滤 } return false;//不过滤 } } return QMainWindow::eventFilter(obj,event);//对于其他组件,不确定是否有过滤器}
思考一下,假如我们将return true注释掉,那么这个事件还是会被分发到相应的事件handler上,相应的效果会触发,只是多了控制台输出的语句.
0 0
- Qt学习之路(9):事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- Qt学习之路(22): 事件过滤器
- QT学习 之 事件与事件过滤器
- Qt 学习之路 2(21):事件过滤器
- QT之事件过滤器
- QT之GUI学习笔记(十七)---事件过滤器
- QT5 学习之路22---事件过滤器
- Qt实战开发之事件过滤器应用
- Qt学习之路之鼠标事件
- Qt学习之路之鼠标事件
- QT学习之阻拦退出程序函数以及事件过滤器的使用,以及文件的操作。
- QT事件处理(二) 之 事件过滤器
- Brainteaser:Bulb Switcher求平方根的思考
- kafka科普
- web移动端开发-将网站分享朋友圈、微信空间、朋友圈功能
- win10+Ubuntu双系统 Easybcd安装
- JavaScript prototype 使用介绍
- Qt学习之路(9):事件过滤器
- iOS之旅--处理跳转
- Java常用正则表达式
- 将genymotion模拟器集成到androidStudio里面
- Stetho(Facebook出品)---Android调试器的使用
- 在SD卡创建文件夹、写入文件、读取文件
- 【redis】redis操作GeoLiteCity
- poj3468 A Simple Problem with Integers(线段树)
- iOS如何隐藏系统状态栏