Qt 如何计算和设置QGraphicsItem相对于新父项的新位置';它的起源是什么?

Qt 如何计算和设置QGraphicsItem相对于新父项的新位置';它的起源是什么?,qt,qt4,qgraphicsview,qgraphicsitem,qgraphicsscene,Qt,Qt4,Qgraphicsview,Qgraphicsitem,Qgraphicsscene,问题 如何计算和设置QGraphicsItem相对于新父级原点的新位置 背景信息 我正在开发一个调整大小的功能,在双击给定对象(矩形、椭圆等)时会显示一个带有一个锚点的边界框。用户可以通过调整定位点的位置来调整对象的大小 什么在起作用 用户可以双击对象并在第一次尝试调整大小时进行精细调整 有问题的观察结果 在连续调整大小的尝试(过程)中,用户看到对象在双击对象并轻轻移动锚点后立即“跳跃”(即,突然调整大小)。对象不会突然调整到任何位置,而是精确地调整到上一个父对象的位置 走向根本原因 我已将问题

问题

如何计算和设置QGraphicsItem相对于新父级原点的新位置

背景信息

我正在开发一个调整大小的功能,在双击给定对象(矩形、椭圆等)时会显示一个带有一个锚点的边界框。用户可以通过调整定位点的位置来调整对象的大小

什么在起作用

用户可以双击对象并在第一次尝试调整大小时进行精细调整

有问题的观察结果

在连续调整大小的尝试(过程)中,用户看到对象在双击对象并轻轻移动锚点后立即“跳跃”(即,突然调整大小)。对象不会突然调整到任何位置,而是精确地调整到上一个父对象的位置

走向根本原因

我已将问题缩小到以下语句(来自重载mousemovevent()函数的片段):

dynamic_cast<RIShape*>(_item)->scaleBy(myp, xscale, yscale);
QGraphicsItem* item = itemAt( event->pos() );
RIShape*       shape= dynamic_cast<RIShape*>(item);
if( item && shape )
{
  if( !_selector )
  {
    _selector = new RISelector(item);
...
  RISelector(QGraphicsItem* item)
  : QGraphicsRectItem(item->sceneBoundingRect()), _W(10.0),
    _rect(item->sceneBoundingRect()), _pivot(0,0), _pressed(false), _isResizing(false),
  _bndBoxPen(Qt::black, 2, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin),
  _anchorPen(Qt::black, 2, Qt::SolidLine), _item(item), _isLef(false)