我的鼠标拖放后它根本不照我的要求来移动。部分代码如下:请各位大侠看看
void AdjustScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if (mouseEvent->button() != Qt::LeftButton)
{
return;
}
isMove = 0;
isScale = 0;
isRotate = 0;
if (itemAt(mouseEvent->scenePos()) == moveIcon)
{
isMove = 1;
}
else if (itemAt(mouseEvent->scenePos()) == scaleIcon)
{
isScale = 1;
}
else if (itemAt(mouseEvent->scenePos()) == rotateIcon)
{
isRotate = 1;
}
QGraphicsScene::mouseMoveEvent(mouseEvent);
}
void AdjustScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if(isMove)
{
rectItem->setPos(mouseEvent->scenePos());
moveIcon->setPos(mouseEvent->scenePos());
scaleIcon->setPos(mouseEvent->scenePos().x() + rectItem->rect().width()/2,
mouseEvent->scenePos().y() + rectItem->rect().height()/2);
rotateIcon->setPos(mouseEvent->scenePos().x() + rectItem->rect().width()/2,
mouseEvent->scenePos().y() - rectItem->rect().height()/2);
}
if(isScale)
{
int dX = 0;
int dY = 0;
if((mouseEvent->scenePos().x() < moveIcon->pos().x())
||(mouseEvent->scenePos().y() < moveIcon->pos().y()))
{
QGraphicsScene::mouseMoveEvent(mouseEvent);
return;
}
scaleIcon->setPos(mouseEvent->scenePos());
dX = scaleIcon->pos().x() - moveIcon->pos().x();
dY = scaleIcon->pos().y() - moveIcon->pos().y();
rectItem->setRect(mouseEvent->scenePos().x()- dX ,mouseEvent->scenePos().y()- dY,dX*2,dY*2);
}
QGraphicsScene::mouseMoveEvent(mouseEvent);
}
void AdjustScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
isMove = 0;
isScale = 0;
isRotate = 0;
QGraphicsScene::mouseReleaseEvent(mouseEvent);
}

请各位指点。我已经折腾很久了。位置老是不对,当中心点移动后,坐标就乱套了。