qt 怎么检测鼠标在不在某个控件上

这篇具有很好参考价值的文章主要介绍了qt 怎么检测鼠标在不在某个控件上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方式一:推荐,感觉这种事件过滤器的方法捕捉比较敏感

记得安装事件过滤器

this->installEventFilter(this);
protected:
    bool eventFilter(QObject *obj, QEvent *event) override;
    //需要过滤的事件
    if (event->type() == QEvent::MouseMove)
    {
        QMouseEvent* mouseEvent = (QMouseEvent*)event;
        QPoint p = mouseEvent->pos();
        int x = m_LightAddrAndDmxList.value(m_iCurrentTablevie)->x();
        int y = m_LightAddrAndDmxList.value(m_iCurrentTablevie)->y();
        int w =m_LightAddrAndDmxList.value(m_iCurrentTablevie)->w();
        int h = m_LightAddrAndDmxList.value(m_iCurrentTablevie)->h();
       if(( x<p.x() && p.x()<w) && ( y<p.y() && p.y()<h))//控件相对于应用程序的坐标
        {
            return true;
        }
       
        //这里做你想做的事
        return true;

    }
    return QWidget::eventFilter(obj,event);

上面的函数还可以有一层,选择对应的你要哪个控件安装这个事件过滤器

比如:

    //需要过滤的事件
    if(obj == ui->lineEdit)//监控的对象
    {
        if (event->type() == QEvent::MouseMove)
        {
            ……
            return true;

        }       
    }
     return QWidget::eventFilter(obj,event);
    

方式二:重写鼠标事件

void mouseMoveEvent(QMouseEvent *ev);

如果控件有父亲,记得也要设置鼠标追踪 

    //设置默认追踪鼠标,否则在触发鼠标移动时,必须先点一下才有效
    this->setMouseTracking(true);
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
        //鼠标的位置
        int i=ev->x();
        int j=ev->y();
}

上面两种方法可以动态的监听鼠标是不是在某个控件上

方式三:静态

if(!ui->lineEdit->geometry().contains(this->mapFromGlobal(QCursor::pos())));

方式四:静态:文章来源地址https://www.toymoban.com/news/detail-590608.html

if(ui->lineEdit->underMouse)

到了这里,关于qt 怎么检测鼠标在不在某个控件上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Qt自定义控件 —— 子控件与父控件的鼠标事件问题

    目录 0、引言: 1、问题描述: 2、解决方案: 3、解决后效果: 在 Qt自定义控件 —— 颜色选择组合控件 https://blog.csdn.net/YMGogre/article/details/128955257 一文中我们创建了自定义的组合控件,在该控件中包含了三个子控件 —— QGraphicsView 、 QLineEdit 和 QPushButton 。当我们通过 setIt

    2024年02月09日
    浏览(93)
  • 【[Qt]基于QGraphicsView的图像显示控件,支持放大、缩小、鼠标拖动】

    ImageViewer.h文件 ImageViewer.cpp 文件 具体使用代码如下 1、初始化类对象,并加入界面布局中 2、打开图像,并加载到控件中 3、从控件中卸载图片 源码链接:https://download.csdn.net/download/xiaohuihuihuige/87239431 百度云: 链接:https://pan.baidu.com/s/1W-KUlIKUFAktUKFin63N0g 提取码:4g8a

    2024年02月11日
    浏览(62)
  • 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

    往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 鼠标悬浮弹出对话框的功能:最终要实现纯代码设计出一个音量按钮,当鼠标悬浮

    2024年04月23日
    浏览(41)
  • QT鼠标事件穿透,使QLabel、QPushbutton等上层控件可以被穿透

    几乎QT所有的标准控件都可以被穿透。方法除了我们自定义这个控件外,如: 之外,这些标准控件也可以通过配置setAttribute来实现鼠标事件穿透。如:

    2024年02月12日
    浏览(42)
  • 【鼠标在不点击的情况下,直接移动到QT控件上不显示提示信息】

      当你想用图标作为按钮时,为了让用户知道按钮的功能,这时候就会在QT控件上加上提示信息,在初始化时,使用QT自带的 setToolTip 方法即可: 但有时明明已经调用了 setToolTips 方法,鼠标移动到QT控件上仍然不会有提示信息,这时候就需要具体分析下 setToolTips 方法是如何

    2024年02月10日
    浏览(40)
  • 【[Qt]基于QChartView开发的图表显示控件,支持实时显示,动态更新,支持鼠标交互等操作】

    十字线和显示坐标实现 在.h文件中定义十字线lineitem变量和坐标textitem变量 在Cpp文件中初始化 然后定义鼠标事件,在鼠标进入时显示,移出时隐藏,移动时显示。 其他实现请参考具体代码 ChartDrawer.h文件 ChartDrawer.cpp 文件 具体使用代码如下 1、初始化类对象,并加入界面布局

    2023年04月23日
    浏览(44)
  • QT中怎么使用QPalette设置按钮控件背景色

    💂 个人主页:pp不会算法 v 🤟 版权: 本文由【pp不会算法 v 】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 关于以上代码:并没有实现设置按钮控件的背景色 但是参照QT的帮助文档: 照上面这么讲确实应该可

    2024年02月11日
    浏览(48)
  • 判断鼠标移入移出页面某个元素(监听鼠标事件)

    写页面时有时需要在鼠标移入或者移出时进行下一步操作 可以用  jQuery  的 事件监听 语法:  在销毁时记得 解除事件监听 这样就可以啦 再记个前一段时间学到的数组转换小知识~不知道写哪里怕时间长了又忘记了 先写这吧 Js将 字符串数组转为数字数组 和将  数字数组转为

    2024年02月15日
    浏览(75)
  • Qt实用技巧:QCustomPlot做北斗GPS显示绝对位置运动轨迹和相对位置运动轨迹图的时,使图按照输入点顺序连曲线

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136131310 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…   使用QCustomPlot绘制多个目标的

    2024年02月20日
    浏览(61)
  • java 怎么判断某个字符串是否在数组中

    在 Java 中,可以使用以下几种方法来判断一个字符串是否在数组中: 使用 for 循环遍历数组,逐个比较字符串是否相等。 使用 Arrays.asList() 将数组转换为列表,然后使用列表的 contains() 方法来判断字符串是否在数组中。 使用 Java 8 的 Stream API,使用 anyMatch() 方法来判断是否存

    2024年02月14日
    浏览(99)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包