我是靠谱客的博主 义气小天鹅,最近开发中收集的这篇文章主要介绍QT——事件分发器、事件过滤器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

    • 简介
    • 事件过滤器

简介

当事件对象创建完毕后并不是立即被执行了,QT会将这个事件对象传递给首先传递给QObject的event函数,event函数并不直接处理事件而是按照事件的类型来分配给不同的事件处理器.(比如:mousePressEvent(QMouseEvent* ev))。如果该函数返回true那么表明该事件已经被处理过了.对于其他我们不关心的事件,我们则是直接调用父类的event()函数再次进行分配。

bool MainWindow::event(QEvent *ev){
    if(ev->type() == QEvent::Timer){
        qDebug()<<"拦截定时器事件";
        return true;
    }
    return this->QWidget::event(ev);
}

事件过滤器

对于事件的拦截不推荐使用event来处理,可以用事件过滤器来代替,其更加灵活,可以具体到具体控件。

  • 步骤
  1. 给控件安装过滤器
  2. 重写eventfilter函数
ui->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——事件分发器、事件过滤器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部