调整QGraphicsItem的大小不会更新Item属性

时间:2013-02-11 15:55:41

标签: c++ qt qgraphicsitem

我正在调整QGraphicsItem(mItem)的大小,如下所示:

  QRectF itemSize = mItem->boundingRect();

  float scale_width = width / itemSize.width();
  float scale_height = height / itemSize.height();

  QTransform t;
  t.scale(scale_width, scale_height);
  mItem->setTransform(t);

直观地看它应该做什么,但是,如果我在重新调整大小后得到boundingRect,它就没有改变。 我的印象是boundingRect可能不会改变,但规模,但也保持不变。如果原始boundingRect是(0,0,100,100)并且新宽度id为200且新高度为200,则我认为新的boundingRect为(0,0,200,200)。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

转换提供了对象空间和场景(世界)空间(或者可能是父对象空间)之间的映射,用于渲染 - 应用于对象本身。

因此,在对象上设置缩放变换,不会更改它的边界框,因为该对象尚未缩放 - 只有映射到场景的方式才有。 docs解释得比我好。

QGraphicsItem有许多mapTo...mapFrom...方法可以满足您的需求。