【问题标题】:Resizing QGraphicsItem does not update Item properties调整 QGraphicsItem 大小不会更新项目属性
【发布时间】:2013-02-11 15:55:41
【问题描述】:

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

我做错了什么?

【问题讨论】:

    标签: c++ qt qgraphicsitem


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-17
      • 2016-10-17
      • 1970-01-01
      • 2012-07-31
      • 2014-08-01
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多