当前位置:网站首页>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)边栏推荐
- 中邮科技冲刺科创板:年营收20.58亿 邮政集团是大股东
- Introduction to XML III
- 博士申请 | 西湖大学学习与推理系统实验室招收博后/博士/研究实习等
- 近日小结(非技术文)
- Huahao Zhongtian sprint Technology Innovation Board: perte annuelle de 280 millions de RMB, projet de collecte de fonds de 1,5 milliard de Beida Pharmaceutical est actionnaire
- C#基础补充
- Node の MongoDB安装
- JVM series - stack and heap, method area day1-2
- MySQL version 8 installation Free Tutorial
- 1200. Minimum absolute difference
猜你喜欢

分布式BASE理论

【R语言数据科学】:交叉验证再回首

Understanding and difference between viewbinding and databinding

【Antd踩坑】Antd Form 配合Input.Group时出现Form.Item所占据的高度不对

MySQL 45 lecture - learn the actual combat notes of MySQL in Geek time 45 lecture - 06 | global lock and table lock_ Why are there so many obstacles in adding a field to the table

MySQL8版本免安装步骤教程

The only core indicator of high-quality software architecture

使用默认路由作为指向Internet的路由

2022G3锅炉水处理考试题模拟考试题库及模拟考试

ASP. Net core introduction I
随机推荐
Xilinx/system-controller-c/boardui/ unable to connect to the development board, the solution of jamming after arbitrary operation
英视睿达冲刺科创板:年营收4.5亿 拟募资9.79亿
golang fmt.printf()(转)
好博医疗冲刺科创板:年营收2.6亿 万永钢和沈智群为实控人
ViewBinding和DataBinding的理解和区别
XML入门一
动画与过渡效果
The only core indicator of high-quality software architecture
Qt如何实现打包,实现EXE分享
1200. 最小绝对差
JVM series - stack and heap, method area day1-2
Lick the dog until the last one has nothing (state machine)
C foundation in-depth learning II
OpenHarmony应用开发之如何创建DAYU200预览器
舔狗舔到最后一无所有(状态机)
1200. Minimum absolute difference
WS2811 M是三通道LED驱动控制专用电路彩灯带方案开发
One of the solutions for unity not recognizing riders
C language staff management system
XML入门二