Получение ограничительной рамки элемента постоянного размера в графических представлениях Qt - PullRequest
2 голосов
/ 12 ноября 2009

Мне нужно получить ограничивающую рамку (в пространстве сцены) QGraphicsItem с установленным флагом QGraphicsItem::ItemIgnoresTransformations.

Согласно документам, вам нужно использовать QGraphicsItem :: deviceTransform () , чтобы сделать это. Я попробовал это:

// Get the viewport => scene transform
vp_trans = view.viewportTransform();
// Get the item => viewport transform
trans = item.deviceTransform(vp_trans);
// Get the item's bounding box in item's space
bbox = item.boundingRect();
// Map it to viewport space
bbox = trans.mapRect(bbox);
// Map it back to scene's space
bbox = vp_trans.mapRect(bbox);

Но что-то не так, ограничивающие рамки кажутся меньше и справа от предметов ...

1 Ответ

3 голосов
/ 12 ноября 2009

Только что понял, QGraphicsView :: viewportTransform () doc говорит: " Возвращает матрицу, которая отображает координаты области просмотра в координаты сцены ", но фактически возвращает сцену в viewport transform.

Инвертирование vp_trans на последнем шаге решило мою проблему.

...