【发布时间】:2022-01-05 03:31:50
【问题描述】:
我想根据鼠标位置围绕一个点旋转 QGraphicsPixmapItem。
所以我尝试了这个:
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); }
但是像素图移动了几个像素。
【问题讨论】:
-
atan2 返回弧度。 setRotation 需要度数。
-
谢谢,现在 qgraphicitem 比以前移动了很多,但似乎 TransformOriginPoint 是错误的......
-
您的要求不清楚,如果在项目内部的某个点按下它,那么我假设旋转中心就是那个点,对吗?如果是这样,那么旋转的角度是多少?如果不是,旋转中心是什么,角度是多少?另外,如果在外面点击该项目会发生什么?
标签: c++ qt qgraphicsitem