перемещение круга с помощью курсора мыши? - PullRequest
0 голосов
/ 27 июня 2019

Я хочу переместить окружность курсором, но этот код перемещает меня изображение курсором.как переместить круг в соответствии с курсором.

label.cpp

void Label::mousePressEvent(QMouseEvent* event){
    mousePressed = true; 
    mCirc.setTopLeft(event->pos());
    mCirc.setBottomRight(event->pos());

    offset = event->pos();
}

void Label::mouseMoveEvent ( QMouseEvent * mouse_event )
{
    if(mouse_event->type() == QEvent::MouseMove &&  mousePressed == true)
    {
        mCirc.setBottomRight(mouse_event->pos());
    }

    update();
    if(mouse_event->buttons() & Qt::LeftButton)
    {
        this->move(mapToParent(mouse_event->pos() - offset));
    }
}

1 Ответ

0 голосов
/ 28 июня 2019

Вы можете перемещать эллипс, используя метод moveCenter.

void Label::mousePressEvent(QMouseEvent* event){
    mousePressed = true; 
    if( mouse_event->buttons() & Qt::RightButton ){
        mCirc.setTopLeft(event->pos());
        mCirc.setBottomRight(event->pos());
    }
    if( mouse_event->buttons() & Qt::LeftButton) {
        offset = event->pos();
        center = mCirc.center();
    }
}

void Label::mouseMoveEvent ( QMouseEvent * mouse_event )
{
    ...
    if(mouse_event->buttons() & Qt::LeftButton) {
        QPoint delta = mouse_event->pos() - offset;    
        mCirc->moveCenter( center + delta);
    }
    update();
}

Возможно, вы захотите защитить другое действие проверкой правой кнопки.

void Label::mouseMoveEvent ( QMouseEvent * mouse_event )
{
    if(mouse_event->type() == QEvent::MouseMove &&  mousePressed == true){
        if(mouse_event->buttons() & Qt::RightButton) {
            mCirc.setBottomRight(mouse_event->pos());
        }
        if(mouse_event->buttons() & Qt::LeftButton) {
            QPoint delta = mouse_event->pos() - offset;    
            mCirc->moveCenter( center + delta);
        }
        update();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...