我有一个QGraphicsPathItem,它是从笛卡尔x,y点的列表中画出来的。
确定游标何时悬停在其中一个点上的最佳(性能明智的)方法是什么?我现在遍历源列表,并将每个点与光标位置进行比较。
问候
发布于 2017-06-06 18:17:33
Qt没有为您想要的提供内置解决方案。您应该重新实现QGraphicsScene::mouseMoveEvent,并在其中检查哪个点(如果有的话)被悬停(有一定的边距),即确定哪个点在当前鼠标位置(QGraphicsSceneMouseEvent::pos)的一定距离内。
计算最密集的任务是确定最近的点。一种简单的方法是迭代所有的点,但是一般的优化实现存在:
缓存最后一个结果并使用三角不等式对于提高该方法的性能可能很重要:
P上,那么下次您就可以验证它是否仍然停留在这个点上。P位置最近的点(您计算最近点的最后一个鼠标位置)位于d的距离,那么您不应该检查是否出现悬停,如果:norm(P - QGraphicsSceneMouseEvent::pos()) < d - hoverThreshold。发布于 2017-06-06 16:06:31
我通常使用QGraphicScene的itemAt()方法来检查光标下的图形项。
https://stackoverflow.com/questions/44393809
复制相似问题