【Qt】QGraphicsItem无法触发mouseMoveEvent问题

本文深入探讨QGraphicsItem在Qt图形场景中如何正确处理鼠标事件。解释了为什么item可能只触发press事件而不触发move和release事件,以及如何通过在mousePressEvent中调用QEvent::accept来解决这一问题,确保后续的鼠标事件能够被item捕捉。

graphics体系中graphicsitem重载鼠标事件,item只触发press事件,没有触发move和release事件,scene和view都能触发press、move、release事件。

经过看帮助文档,查看graphicsitem mousemoveevent的说明

翻译后是:

可以重新实现用于事件事件的该事件处理程序,以接收该项目的鼠标移动事件。 如果确实收到此事件,则可以确定该项目也收到了鼠标按下事件,并且该项目是当前的鼠标捕获器。

在事件上调用QEvent :: ignore()或QEvent :: accept()无效。

默认实现处理基本的项目交互,例如选择和移动。 如果要在重新实现此功能时保留基本实现,请在重新实现中调用QGraphicsItem :: mouseMoveEvent()。

请注意,mousePressEvent()决定接收鼠标事件的图形项。 有关详细信息,请参见mousePressEvent()描述。

 

最后一句说了,决定是否接收鼠标事件通过mousepressevent来决定

我们再看mousePressEvent的描述

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值