目录
- 简介
- 事件过滤器
简介
当事件对象创建完毕后并不是立即被执行了,QT会将这个事件对象传递给首先传递给QObject的event函数,event函数并不直接处理事件而是按照事件的类型来分配给不同的事件处理器.(比如:mousePressEvent(QMouseEvent* ev))。如果该函数返回true那么表明该事件已经被处理过了.对于其他我们不关心的事件,我们则是直接调用父类的event()函数再次进行分配。
复制代码
1
2
3
4
5
6
7
8bool MainWindow::event(QEvent *ev){ if(ev->type() == QEvent::Timer){ qDebug()<<"拦截定时器事件"; return true; } return this->QWidget::event(ev); }
事件过滤器
对于事件的拦截不推荐使用event来处理,可以用事件过滤器来代替,其更加灵活,可以具体到具体控件。
- 步骤
- 给控件安装过滤器
- 重写eventfilter函数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14ui->label_1->installEventFilter(this); bool MainWindow::eventFilter(QObject *obj, QEvent *ev){ if(obj == ui->label_1){ if(ev->type() == QEvent::Timer){ qDebug()<<"label1的拦截定时器事件"; return true; } else{ return false; } } return QWidget::eventFilter(obj,ev); }
最后
以上就是义气小天鹅最近收集整理的关于QT——事件分发器、事件过滤器的全部内容,更多相关QT——事件分发器、事件过滤器内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复