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);
}
相关文章
|
1月前
|
存储 Windows
(13) Qt事件系统(two)
文章详细介绍了Qt事件系统,包括事件分发、自定义事件、事件传播机制、事件过滤以及事件与信号的区别。
78 3
(13) Qt事件系统(two)
|
1月前
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
70 0
(12)Qt事件系统(one)
|
3月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
203 4
|
4月前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
115 0
|
6月前
|
开发框架 算法 程序员
【Qt 元对象系统】深入探索Qt事件过滤:从基础到高级应用
【Qt 元对象系统】深入探索Qt事件过滤:从基础到高级应用
179 7
|
6月前
|
C++
qt事件过滤器的使用(可以用于控制屏幕背光等)
qt事件过滤器的使用(可以用于控制屏幕背光等)
114 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
181 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前