0

我的 qgraphicsscene 有 qgraphicswidget,它不断添加 qgraphicsLayoutItem。在 graphicsView 我需要在场景中协调 qgraphicswidget 几何。我试过 QList items = scene()->items(); 并用类型检查它

foreach (QGraphicsItem *item, items) { if(item->type() == ItemType) { }

但是如何将项目转换为 qgraphicswidget 并将其几何图形更改为场景坐标。正常 item.boundingRect 不断返回 0,0, 10x10

4

1 回答 1

1

项目的边界矩形位于项目坐标中。要将其映射到场景坐标,请使用QGraphicsItem::mapToScene()

const QRectF mapped = item->mapToScene(item->boundingRect());

要转换 QGraphicsItem,您可以简单地使用 dynamic_cast 或 static_cast,或特殊的qgraphicsitem_cast

auto widget = qgraphicsitem_cast<QGraphicsWidget*>(item);

要映射坐标,不需要强制转换。

于 2015-12-14T08:56:23.507 回答