我的qgraphicsscene有一个qgraphicswidget,它不断添加qgraphicsLayoutItem。在graphicsView中,我需要协调场景中的qgraphicsvidget几何体。我试过了QList items=scene()->items();并用类型检查
foreach(QGraphicsItem*项,项){if(item->type()==ItemType){}
但是如何将项转换为qgraphicswidget并将其gemoetry更改为场景坐标。正常项.boundingRect不断返回0,0,10x10
项目的边界矩形位于项目坐标中。要将其映射到场景坐标,请使用QGraphicsItem::mapToScene():
const QRectF mapped = item->mapToScene(item->boundingRect());
要转换QGraphicsItem,您可以简单地使用dynamic_cast或static_cast,或特殊的qgraphicitem_cast:
auto widget = qgraphicsitem_cast<QGraphicsWidget*>(item);
不过,要映射坐标,应该不需要投射。