1

我正在调整 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)。

我究竟做错了什么 ?

4

1 回答 1

1

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

所以在一个对象上设置一个缩放变换,不会改变它的边界框,因为对象没有被缩放——只有它映射到场景中的方式有​​。文档比我能解释得更好。

QGraphicsItemmapTo...有许多mapFrom...方法可以提供您需要的东西。

于 2013-02-11T17:49:08.843 回答