QT自动捕捉鼠标位置

Qt自动捕捉光标位置所知道的有两种情况:
1.QWidget主窗体或主窗体的某一部件捕捉鼠标位置
mouseTracking(bool):
此属性保存是否为小部件启用鼠标跟踪,如果禁用了鼠标跟踪(默认),那么小部件只在移动鼠标时按下至少一个鼠标按钮时接收鼠标移动事件。如果启用了鼠标跟踪,即使没有按下按钮访问功能,小部件也会接收鼠标移动事件bool hasMouseTracking()。
给ui界面的graphicsView部件添加自动捕捉鼠标:

ui->graphicsView->setMouseTracking(true);//跟踪鼠标

如果鼠标控件发生移动,会触发鼠标移动函数mouseMoveEvent,我们将这个函数重写我们需要的功能就可以了,比如发送一个信号。

void mouseMoveEvent(QMouseEvent *event)
{
	emit sendsignal(even->pos());//sendsignal是一个信号,需要在.h文件中定义 signal:void sendsignal();
}

2.模型视图框架(场景,视图,图元)捕捉鼠标位置

void QGraphicsItem::setAcceptHoverEvents(bool enabled)

如果启用为真,此项目将接受悬停事件;否则,不接受。默认情况下,项目不接受悬停事件。当当前没有鼠标抓取项时,将传递悬停事件。当鼠标光标进入一个项目时,当它在项目内移动时,以及当光标离开一个项目时,它们都会被发送。鼠标悬停事件通常用于在项目输入时突出显示它,以及在鼠标悬停在项目上时跟踪鼠标光标(相当于QWidget:mouseTracking)。自动调用的函数有hoverEnterEvent()、hoverMoveEvent()和hoverLeaveEvent()。

这个是Qt模型视图框架的功能,使用时需要通过QGraphicsItem类获取图元坐标,并且将这个功能设置为true。它属于QGraphicsItem类

QGraphicsItem pixmapItem = new QGraphicsItem;
pixmapItem.setAcceptHoverEvents(true);

注意setAcceptHoverEvents()的自动调用函数是hoverEnterEvent()、hoverMoveEvent()和hoverLeaveEvent()。这三个,其中hoverMoveEvent()是捕捉鼠标移动的函数。
我们可以重写这个函数去捕捉鼠标坐标

void ImageWidget::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
    emit mouseMoveEventChage(event->pos());
}

具体示例:https://blog.csdn.net/jellocomeon/article/details/104329293
如有不到之处,请联系指出,感谢指导!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值