• 2976阅读
  • 2回复

关于图元移动后坐标问题 [复制链接]

上一主题 下一主题
离线hnwdx
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-01
为什么我采用QGraphicsView::RubberBandDrag模式,选择图元,移动,看着显示位置都正确,然而,当我调用该图元的setRect()设置Rect后位置总是在我的Rect上加个偏移,偏移既是移动的距离。
QRectF newrect(100, 100, 100, 100);
m_rect->setRect(newrect);
如果不移动m_rect,m_rect就会在100,100的位置,而如果移动了,再次调用setRect,就不会在100,100的位置了。
这个setRect为什么只有在第一次的时候起作用啊。

且如果不是100,100,100,100这样固定的点,那么调用setRect后总是出现在被移动的位置+初始偏移值。怪了。
离线hnwdx

只看该作者 1楼 发表于: 2011-08-01
    QRectF newrect;
    newrect.setRect(m_sizemove->boundingRect().left(), m_sizemove->boundingRect().top(), m_sizemove->boundingRect().width(), m_sizemove->boundingRect().height());
    ((QGraphicsRectItem*)peritem)->setRect(newrect);
    ((QGraphicsRectItem*)peritem)->setPos(m_sizemove->boundingRect().left()-newrect.left(), m_sizemove->boundingRect().top()-newrect.top());
            
虽然这样搞定了,但不明白为什么,求解释。看着代码都迷糊,解释不通啊。
离线hnwdx

只看该作者 2楼 发表于: 2011-08-01
明明m_sizemove位置与newrect相同,也是peritem的新位置,为什么还要setPos,进行相减?
快速回复
限100 字节
 
上一个 下一个