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);
Чтобы отобразить координаты, приведение не должно быть необходимым, хотя.