Qt图形化界面学习之鼠标事件

在Qt中,通过重写QLabel的鼠标事件函数,可以实现鼠标进入、离开时的特定行为。文章详细介绍了如何创建自定义控件,捕获鼠标进入、离开事件,并在鼠标点击时显示坐标。使用QMouseEvent的button和buttons属性来识别鼠标状态,同时启用鼠标追踪,使得在不点击的情况下也能获取鼠标位置。
摘要由CSDN通过智能技术生成

Qt中捕获鼠标进入事件的函数如下:
在这里插入图片描述
在这里插入图片描述
要求实现鼠标进入label后打印鼠标进入,移出打印鼠标离开。
在这里插入图片描述
想要实现这个功能,我们必须使用自定义控件。
这里我们不用ui界面。
在这里插入图片描述
这里我们复制刚才帮助文档查看的函数所有信息。
在这里插入图片描述
然后在.cpp中实现我们想要鼠标进入和移除实现的功能。
在这里插入图片描述
然后在主窗口中提升该自定义窗口控件,但是发现基类是QLabel,所以我们需要去修改一下继承对象。
在这里插入图片描述
修改内容如下:
在这里插入图片描述
在这里插入图片描述
最后运行,结果如下:

在这里插入图片描述


我们在QLabel的重新实现函数中找到了与鼠标相关的函数。
在这里插入图片描述
接下来我们给这几个事件进行重写。
首先呢,在头文件中加入这几个函数。
在这里插入图片描述
然后去.cpp文件中重写实现。为了方便观察结果,我们先把之前实现的鼠标进入、离开注释掉。
在这里插入图片描述
在这个实现中,点击鼠标右键也是会有输出结果。

接下来我们实现点击鼠标,显示点击位置的坐标。这个就需要利用我们函数中的参数QMouseEvent了。
在这里插入图片描述

我们可以看到,该类型可以输出打印当前坐标x、y。
在这里,使用了Qt中格式化字符串的方法。
在这里插入图片描述
在这里插入图片描述
当鼠标左键按下,提示信息。
通过查找QMouseEvent的帮助文档,我们可以看见按键相关的在button下。
在这里插入图片描述
但是这里有个问题,鼠标移动并没有显示坐标,因为button只能记录瞬间的结果,因此我们需要使用buttons。
在这里插入图片描述
在这里插入图片描述
只需要加个s,就可以完美运行了。

最后,我们想要鼠标不用点击任何按键就能实时获取位置,设置鼠标追踪,只要鼠标移动就能捕获。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值