|
本帖最后由 lwk 于 2017-1-15 23:38 编辑
setTransform()是QTransform的函数,是设置当前变换的含义,rotate()也是QTransform的函数,是将坐标旋转变换;而setRotation()是QGraphicsItem的函数,是将当前图形项旋转。楼主应该是将坐标旋转变换rotate()和图形项旋转setRotation()弄混了。
如果用rotate(),旋转变换代码为:
case Qt::Key_Up:
setTransform(transform().rotate(90));
}
if(isColliding()){
setTransform(transform().rotate(-90));
}
[//获取变换前的变换,并旋转90度后替换原来的变换,在需要创建新图形项时setTransform(oldTransform)恢复坐标系统。]
如果用setRetation(),旋转变换代码为:
case Qt::Key_Up:
i+=1;
setRotation(90*i);
if(isColliding()){
i-=1;
setRotation(90*i));
}
[//设置全局变量i=0,不然不能连续旋转90度(因为每次按Up键时坐标系统不旋转(这里就可以去掉全局变量oldTransform了),只将最初的图形项旋转特定角度,而这个角度是只与坐标系统相干的,跟前一次旋转的角度无关),最后只需要在创建新图形项的地方设i=0,setRotation(0)。] |
|