Qt事件分发器、事件过滤器

简介: Qt事件分发器、事件过滤器

一、事件分发器

事件分发器:用于事件的分发,可以进行事件拦截的操作。事件分发器返回布尔类型:bool event(QEvent ev),如果返回值为true,代表用户自己处理该事件,否者交给基类实现事件。使用步骤:重写event事件;

    //事件过滤器
    bool eventFilter(QObject *obj,QEvent *e);
//事件分发器
bool MyLabel::event(QEvent *e){
    //如果鼠标按下,在event事件中做处理
    if(e->type()==QEvent::MouseButtonPress){
 
        QMouseEvent *ev=static_cast<QMouseEvent *>(e);
        QString str=QString("event鼠标按下x=%1 y=%2 globalX=%3 globalY=%4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
        qDebug()<<str;
        //事件已处理,不向下分发
        return true;
    }
    //向下分发
    return QLabel::event(e);
}

二、事件过滤器

事件过滤器:可以在程序分发到event事件之前再做一次高级拦截。事件分发器返回布尔类型:bool eventfilter(QObjectobj,QEvent ev),如果返回值为true,代表用户自己处理该事件,否者交给基类实现事件。使用两个步骤:1.给控件安装事件过滤器;2.重写eventfilter事件。

//给label 安装事件过滤器
    ui->label->installEventFilter(this);
bool Widget::eventFilter(QObject *obj,QEvent *e){
    if(obj==ui->label){
    //如果鼠标按下,在event事件中做处理
        if(e->type()==QEvent::MouseButtonPress){
 
            QMouseEvent *ev=static_cast<QMouseEvent *>(e);
            QString str=QString("event鼠标按下x=%1 y=%2 globalX=%3 globalY=%4").arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
            qDebug()<<str;
            //事件已处理,不向下分发
            return true;
        }
    }
    return QWidget::eventFilter(obj,e);
}
目录
相关文章
|
2月前
|
存储 开发框架 开发者
QT C++焦点事件:多角度解析实用技巧与方法
QT C++焦点事件:多角度解析实用技巧与方法
471 0
|
2月前
|
API
QT基础入门——Qt事件(五)
QT基础入门——Qt事件(五)
75 0
QT基础入门——Qt事件(五)
|
1天前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
|
2月前
|
开发框架 算法 程序员
【Qt 元对象系统】深入探索Qt事件过滤:从基础到高级应用
【Qt 元对象系统】深入探索Qt事件过滤:从基础到高级应用
66 7
|
2月前
|
测试技术 数据库 C++
Qt C++拖放事件探索之旅:多方法深入解析
Qt C++拖放事件探索之旅:多方法深入解析
273 1
|
2月前
|
C++
qt事件过滤器的使用(可以用于控制屏幕背光等)
qt事件过滤器的使用(可以用于控制屏幕背光等)
32 0
|
2月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
52 0
|
15天前
|
关系型数据库 MySQL 项目管理
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
|
15天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
|
15天前
|
SQL 数据可视化 关系型数据库
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计
数据库大作业——基于qt开发的图书管理系统(二) 相关表结构的设计