QT中EventFilter使用方法

这篇具有很好参考价值的文章主要介绍了QT中EventFilter使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt处理事件共有五种方式,其中第三种方式:”在QObject中注册事件过滤器”的基本使用方法如下:如果对象使用installEventFilter()函数注册了事件过滤器,目标对象中的所有事件将首先发给这个监视对象的eventFilter()函数。eventFilter()函数返回true,则取消事件(事件不再向目标对象发送),返回false,则事件被继续发往目标对象。事件过滤器可以是任何从QObject继承的对象,只要实现eventFilter()这个函数。如果同一object安装了多个event filter, filter将从最近安装的到第一个依次激活。
因此,设置一个event filter有两个步骤:
(1) 在目标对象上调用installEventFilter(),将监测对象注册到目标对象上。
(2)在监测对象的eventFilter()方法里处理目标对象的事件。文章来源地址https://www.toymoban.com/news/detail-438486.html

myMenu::myMenu(QWidget *parent) :
    QWidget(parent),
{
	//构造函数中为控件设置过滤器
    ui->zoomCheckBox->installEventFilter(this);
    ui->muteCheckBox->installEventFilter(this);
}
bool myMenu::eventFilter(QObject *obj, QEvent *event)
{
	//如果对象是zoomCheckBox,当鼠标进入(悬停)其上,则zoomTips显示
    if (obj == (QObject*)ui->zoomCheckBox)
    {
        if (event->type() == QEvent::Enter)
        {
            ui->zoomTips->setVisible(true);
        }
        else if(event->type() == QEvent::Leave)
        {
            ui->zoomTips->setVisible(false);
        }
        return false;
    }
    //监测对象:muteCheckBox;关注的事件:Enter和Leave
    else if (obj == (QObject*)ui->muteCheckBox)
    {
        if (event->type() == QEvent::Enter)
        {
            ui->muteTips->setVisible(true);
        }
        else if(event->type() == QEvent::Leave)
        {
            ui->muteTips->setVisible(false);
        }
        return false;
    }
}

到了这里,关于QT中EventFilter使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue 中使用回车键触发事件的方法详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Vue 前端开发中,我们经常需要在输入框或表单中使用回车键触发某个特定的事件,例如提交表单或搜索数据等

    2024年02月11日
    浏览(33)
  • 【UE】事件分发器 正确使用方法 (如何创建 Bnd Evt Delegate Signature)

    打开蓝图类,左下角新建EventDispatch: 然后命名一下这个分发器。这里以UE5为例,UE4同理的。 命名为testDispatch。 新创建好的分发器,需要我们鼠标拖动到蓝图中才可以使用。 拖动后,点击Call 就会出现最后边的 Call Delegate。 然后就可以根据自己蓝图的逻辑进行设计。 即如何

    2023年04月22日
    浏览(35)
  • Qt qDebug基本的使用方法详解

    DebugView下载   qDebug是Qt框架中用于输出调试信息的一个宏。它类似于C++标准库中的std::cout,用于在控制台中输出调试信息。qDebug的使用非常简单,可以用于输出各种类型的数据,例如字符串、整数、浮点数等。 qInfo、qWarning、qCritical等,用于输出不同级别的调试信息。   

    2024年04月22日
    浏览(41)
  • Qt | 配置文件QSetting的使用方法

    1、简介 配置文件常见的作用是启动软件是保留上次软件退出是的界面状态,如果不保留配置,且软件界面的内容又比较多,重启软件后界面恢复默认,那么每次打开界面都需要重新设置,这样比较麻烦,所以可以使用配置文件进行保存,软件启动的时候自动加载。 2、QSett

    2024年02月13日
    浏览(27)
  • Qt QThread的moveToThread方法使用

    从 Qt4.4 版本之后,因为 QThread 的 run 方法创建新线程这样实现与 Qt 设计的理念不符,Qt 主推使用 moveToThread 方法来创建新线程。 QThread应该被看做是操作系统线程的接口或控制点,而不应该包含需要在新线程中运行的代码。需要运行的代码应该放到一个QObject的子类中,然后将

    2024年02月14日
    浏览(22)
  • DAY4,Qt(事件处理机制的使用,Qt中实现服务器的原理)

    ---chatser.h---头文件 ---chatser.cpp---函数实现文件 ---main.cpp---测试文件 结果展示---     

    2024年02月15日
    浏览(45)
  • Qt Creator使用Clang Format方法

    习惯性的想格式化代码,发现Qt Creator默认居然是没有代码格式化的,只有一个缩进。 Qt Creater中有个插件:beautifier,在\\\"帮助-关于\\\"插件中,开启“Beautifier”即可(会提醒需要重启Qt creator)。 注:Qt Creator安装包中不包含这个格式化工具,它的作用是调用格式化工具进行格式

    2024年02月10日
    浏览(31)
  • Qt中信号槽的介绍及使用方法

    目录 三、信号槽 1. 信号槽的概念 2. 函数原型 2.1 自带信号 → 自带槽 2.2 自带信号 → 自定义槽 2.3 自定义信号 3. 参数传递 3.1 全局参数 3.2 信号槽传参 4. 对应关系 4.1 一对多 4.2 多对一 在之前的学习中,可以实现简单的UI效果,但是按钮不能点击。如果让按钮能在用户点击后

    2024年02月09日
    浏览(31)
  • Unity Blend Tree(动画混合树)与AnimationEvent(动画事件)一起使用所带来的多个动画事件触发的问题及解决方法

    最近在添加人物脚步声效,所以打算使用unity的动画事件来制作,但走路动画是用的2d的混合树,就导致了当动画进行混合播放的时候,动画事件也会一起触发 在unity社区进行搜索后发现了这篇2015年的 帖子 ,在unity官方技术人员的评论下找到了答案: 具体做法是通过返回动画

    2024年02月12日
    浏览(32)
  • 快速了解4种阻止事件冒泡的方法(原生js阻止,vue中使用修饰符阻止)

    前端结构 事件冒泡:clickSonBox事件发生时clickFatherBox事件也被触发了 此时点击子盒子 对话框弹出两次 方法1:使用js阻止事件冒泡 方法2:使用事件修饰符stop 绑定事件时,使用stop修饰符阻止事件冒泡 方法3:使用事件修饰符self 绑定事件时,使用self修饰符 表示只在本元素被点

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包