坐标映射
经常,处理场景中item 时,在场景与item 之间,item 与item 之间,视图与场
景之间进行坐标映射,形状映射是非常有用的。举例来讲,当你在QGraphicsView
的视口中点击鼠标时,你应该通过调用QGraphicsView::mapToScence()与
QGraphicsScene::itemAt()来获知光标下是场景中的哪个item。假如你想获知
一个item 位于视口中的什么位置,你应该先在item 上调用
QGraphicsItem::mapToScene(),然后调用QGraphicsView::mapFromScene()。最
后,假如你想在一个视图椭圆中有哪些items,你应该把QPainterPath 传递到
mapToScene(),然后再把映射后的路径传递到QGraphicsScene::items()。
你可以调用QGraphicsItem::mapToScene()与QGraphicsItem::mapFromScene()
在item 与场景之间进行坐标与形状的映射。也可以在item 与其父item 之间通
过QGraphicsItem::mapToParent()与QGraphicsItem::mapFromItem()进行映
射。所有映射函数可以包括点,矩形,多边形,路径。视图与场景之间的映射也
与此类似。对于从视图与item 之间的映射,你应该首先映射到场景,然后再从
场景向item 进行映射。
经常,处理场景中item 时,在场景与item 之间,item 与item 之间,视图与场
景之间进行坐标映射,形状映射是非常有用的。举例来讲,当你在QGraphicsView
的视口中点击鼠标时,你应该通过调用QGraphicsView::mapToScence()与
QGraphicsScene::itemAt()来获知光标下是场景中的哪个item。假如你想获知
一个item 位于视口中的什么位置,你应该先在item 上调用
QGraphicsItem::mapToScene(),然后调用QGraphicsView::mapFromScene()。最
后,假如你想在一个视图椭圆中有哪些items,你应该把QPainterPath 传递到
mapToScene(),然后再把映射后的路径传递到QGraphicsScene::items()。
你可以调用QGraphicsItem::mapToScene()与QGraphicsItem::mapFromScene()
在item 与场景之间进行坐标与形状的映射。也可以在item 与其父item 之间通
过QGraphicsItem::mapToParent()与QGraphicsItem::mapFromItem()进行映
射。所有映射函数可以包括点,矩形,多边形,路径。视图与场景之间的映射也
与此类似。对于从视图与item 之间的映射,你应该首先映射到场景,然后再从
场景向item 进行映射。