橘猫掸子 2021-11-03 11:40 采纳率: 25%
浏览 33
已结题

QGraphicsItem如何检测与鼠标发生碰撞?

场景需求:流程图的中的图形模块,当鼠标(无论是按压还是未按压状态)进入图形某块后,都显示图形模块的各个边中点。

方案一:利用hoverEnterEvent和hoverLeaveEvent两个事件,问题是:当鼠标按压时hoverEnterEvent事件不响应。
方案二:想利用QGraphicsItem->scene()->collidingItems(this),碰撞检测做。问题是:无法知晓是不是跟鼠标发生了碰撞。
方案三:这个方案是最麻烦的。在QGraphicsScene中的mouseMoveEvent事件中,实时检测是不是位于图形模块,然后设置各个边中点可见,如果鼠标移开还得设置不可见,因此这里必须通过成员在保存上次鼠标所在的图形模块指针,非常麻烦!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月11日
    • 创建了问题 11月3日