当前位置:网站首页>qt 怎么检测鼠标在不在某个控件上
qt 怎么检测鼠标在不在某个控件上
2022-07-04 12:49:00 【Licht小粉】
方式一:推荐,感觉这种事件过滤器的方法捕捉比较敏感
记得安装事件过滤器
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())));
方式四:静态:
if(ui->lineEdit->underMouse)
边栏推荐
猜你喜欢
数据库公共字段自动填充
華昊中天沖刺科創板:年虧2.8億擬募資15億 貝達藥業是股東
国内酒店交易DDD应用与实践——代码篇
Flet教程之 03 FilledButton基础入门(教程含源码)(教程含源码)
德明利深交所上市:市值31亿 为李虎与田华夫妻档
动画与过渡效果
30: Chapter 3: develop Passport Service: 13: develop [change / improve user information, interface]; (use * * * Bo class to accept parameters, and use parameter verification)
锐成芯微冲刺科创板:年营收3.67亿拟募资13亿 大唐电信是股东
使用默认路由作为指向Internet的路由
SCM polling program framework based on linked list management
随机推荐
Node の MongoDB 安装
以房抵债能否排除强制执行
C#基础补充
Web knowledge supplement
Secretary of Homeland Security of the United States: domestic violent extremism is one of the biggest terrorist threats facing the United States at present
MySQL version 8 installation Free Tutorial
OpenHarmony应用开发之如何创建DAYU200预览器
美国土安全部部长警告移民“不要踏上危险的旅程”
Commvault 和 Oracle 合作,在 Oracle 云上提供 Metallic数据管理即服务
HAProxy高可用解决方案
源码编译安装MySQL
Oracle 被 Ventana Research 评为数字创新奖总冠军
js中的变量提升和函数提升
Cors: standard scheme of cross domain resource request
硬件基础知识-二极管基础
JVM系列——栈与堆、方法区day1-2
好博医疗冲刺科创板:年营收2.6亿 万永钢和沈智群为实控人
德明利深交所上市:市值31亿 为李虎与田华夫妻档
Automatic filling of database public fields
C#基础深入学习一