我的qgraphicsscene有qgraphicswidget,不断添加qgraphicsLayoutItem。在graphicsView中,我需要在场景中协调得到qgraphicswidget几何体。 我试过了 QList items = scene() - > items(); 并检查其类型
foreach(QGraphicsItem * item,items){ if(item-> type()== ItemType) { }
但如何将项目转换为qgraphicswidget并将其gemoetry更改为场景坐标。 normal item.boundingRect不断返回0,0,10x10
答案 0 :(得分:1)
项目的边界矩形在项目坐标中。要将其映射到场景坐标,请使用QGraphicsItem::mapToScene():
const QRectF mapped = item->mapToScene(item->boundingRect());
要投射QGraphicsItem,您只需使用dynamic_cast或static_cast,或使用特殊qgraphicsitem_cast:
auto widget = qgraphicsitem_cast<QGraphicsWidget*>(item);
要绘制坐标,不应该进行投射。