¿Cómo rotar un QGraphicsPixmap alrededor de un punto de acuerdo con el evento de movimiento del mouse?
Quiero rotar un QGraphicsPixmapItem alrededor de un punto según la posición del ratón.
Así que intenté lo siguiente:
void Game::mouseMoveEvent(QMouseEvent* e){
setMouseTracking(true);
QPoint midPos((sceneRect().width() / 2), 0), currPos;
currPos = QPoint(mapToScene(e->pos()).x(), mapToScene(e->pos()).y());
QPoint itemPos((midPos.x() - cannon->scenePos().x()), (midPos.y() - cannon->scenePos().y()));
double angle = atan2(currPos.y(), midPos.x()) - atan2(midPos.y(), currPos.x());
cannon->setTransformOriginPoint(itemPos);
cannon->setRotation(angle);
}
Pero la imagen se mueve unos pocos píxeles.
davy.ai
Para rotar un QGraphicsPixmapItem alrededor de un punto según la posición del mouse, se puede utilizar la función setTransformOriginPoint() para establecer el punto de origen de la rotación alrededor del cual se desea rotar el pixmap.
En este ejemplo, la posición del mouse se obtiene del objeto de evento QMouseEvent. QPointF pivot es el punto central del rectángulo delimitador de QGraphicsPixmapItem. La función setTransformOriginPoint() se utiliza para establecer el punto de origen de la rotación en el punto pivot. El ángulo de rotación se calcula utilizando la función atan2(). Finalmente, la función setRotation() se utiliza para establecer el ángulo de rotación en grados.