在Qt图形视图中获取常量项的边界框

时间:2009-11-12 03:26:49

标签: qt qgraphicsview

我需要获取设置了QGraphicsItem标志的QGraphicsItem::ItemIgnoresTransformations s的边界框(在场景空间中)。

根据文档,您需要使用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 个答案:

答案 0 :(得分:3)

刚想通了,QGraphicsView :: viewportTransform()doc说“返回一个将视口坐标映射到场景坐标的矩阵”,但实际上它返回场景视口转换。

在最后一步中反转vp_trans解决了我的问题。