Typecast qgraphicsitem для qgraphicswidget

Мой qgraphicsscene имеет qgraphicswidget, который постоянно добавляет qgraphicsLayoutItem. в graphicsView мне нужно получить геометрию qgraphicswidget в сцене скоординированной. я попробовал QList items = scene()->items(); и проверьте его с типом

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

но как преобразовать элемент в qgraphicswidget и изменить его геометрию на координаты сцены. обычный item.boundingRect возвращает постоянно 0,0, 10x10

1 ответ

Ограничительный прямоугольник элемента находится в координатах элемента. Чтобы сопоставить его с координатами сцены, используйте QGraphicsItem:: mapToScene ():

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

Чтобы привести QGraphicsItem, вы можете просто использовать dynamic_cast или static_cast или специальный qgraphicsitem_cast:

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

Чтобы отобразить координаты, приведение не должно быть необходимым, хотя.

Другие вопросы по тегам