我有一个QGraphicsPathItem,它是从笛卡尔x,y点列表中提取的。
确定何时将光标悬停在其中一个点上的最佳(性能明智)方法我现在遍历源列表并将每个点与光标位置进行比较。
此致
答案 0 :(得分:0)
我通常使用
def first_before_second_noop(op_first, op_second):
with tf.control_dependencies([op_first]):
op_second tf.group(op_second, tf.no_op())
return op_second
的{{1}}方法来检查光标下的图形项目。
答案 1 :(得分:0)
Qt没有为您想要的内容提供内置解决方案。您应该重新实现QGraphicsScene::mouseMoveEvent
并检查哪个点(如果有)悬停(具有一定的余量),即确定哪个点在当前鼠标位置的某个距离内(QGraphicsSceneMouseEvent::pos
)。
计算密集度最高的任务是确定最近的点。一种天真的方法是遍历所有点,但存在一般optimised implementation:
缓存最后一个结果并使用triangle inequality对于提高此方法的性能非常重要:
如果当前鼠标悬停点P
,则下次您只能验证它是否仍然存在这一点。
如果当前没有任何点悬停,距离位置P
最近的点(您计算最近点的最后一个鼠标位置)距离为d
,那么您不应该检查是否发生悬停,如果:norm(P - QGraphicsSceneMouseEvent::pos()) < d - hoverThreshold