• 3175阅读
  • 0回复

如何才能让我的框可以随鼠标变大变小。 [复制链接]

上一主题 下一主题
离线pqfeng
 
只看楼主 正序阅读 楼主  发表于: 2009-05-16
我的鼠标拖放后它根本不照我的要求来移动。部分代码如下:请各位大侠看看
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);
}

请各位指点。我已经折腾很久了。位置老是不对,当中心点移动后,坐标就乱套了。
快速回复
限100 字节
 
上一个 下一个