Как изменить размер QGraphicsRectItem с помощью мыши

Я разрабатываю графический интерфейс пользователя (GUI), который позволяет пользователю рисовать несколько прямоугольников и изменять их размер с помощью указателя мыши.

Код для рисования прямоугольников работает отлично. Однако, когда дело доходит до изменения размера появляются некоторые нежелательные ошибки.

Вот мой код:

void ImageGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event){if(startModifying==true){

if(isOnTopLeftCornerPressed==true){

QRectF rectF_buffer(rectModified->rect().bottomRight().x(),rectModified->rect().bottomRight().y(),event->scenePos().x()-rectModified->rect().bottomRight().x(),event->scenePos().y()-rectModified->rect().bottomRight().y());
rectModified->setRect(rectF_buffer.normalized());

}
if(isOnTopRightCornerPressed==true){

QRectF rectF_buffer(rectModified->rect().bottomLeft().x(),rectModified->rect().bottomLeft().y(),event->scenePos().x()-rectModified->rect().bottomLeft().x(),event->scenePos().y()-rectModified->rect().bottomLeft().y());
rectModified->setRect(rectF_buffer.normalized());

}
if(isOnBottomRightCornerPressed==true){

QRectF rectF_buffer(rectModified->rect().topLeft().x(),rectModified->rect().topLeft().y(),event->scenePos().x()-rectModified->rect().topLeft().x(),event->scenePos().y()-rectModified->rect().topLeft().y());
rectModified->setRect(rectF_buffer.normalized());

}
if(isOnBottomLeftCornerPressed==true){

QRectF rectF_buffer(rectModified->rect().topRight().x(),rectModified->rect().topRight().y(),event->scenePos().x()-rectModified->rect().topRight().x(),event->scenePos().y()-rectModified->rect().topRight().y());
rectModified->setRect(rectF_buffer.normalized());

}

}
}

startModifying:

Эта переменная проверяет, находится ли пользователь в «режиме изменения».

isOnTopLeftCornerPressed / isOnTopRightCornerPressed / isOnBottomRightCornerPressed / isOnBottomLeftCornerPressed:

Эти переменные проверяют, нажал ли пользователь указателем мыши один из углов прямоугольника (вверху справа, вверху слева, внизу справа и внизу слева).

rectModified

Это QGraphicsRectItem

С помощью этого кода пользователь может изменить размер прямоугольника:

Пользователь может изменить размер прямоугольника, когда высота и ширина являются положительными или отрицательными

Однако, когда высота или ширина становятся отрицательными во время изменения размера, они перестают работать:
Пользователь не может изменить размер прямоугольника, когда высота или ширина являются положительными и отрицательными или отрицательными и положительными соответственно

MouseMoveEvent () вызывается. Тем не менее, когда ширина ()<0, «нормализованная» функция не меняет местами левый и правый углы, а также верхний и нижний углы, если высота ()<0 как сказано в документации Qt.

Не могли бы вы мне помочь, пожалуйста ?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]