最近在写一个旋转GraphicsItem的小程序
用到了,QLineF的angle函数来得到需要旋转的角度值。
发现了:
QLineF的rotate函数其实有两种重载形式, 但是Assistant上只写了一种如下(也许我不够仔细)
qreal QLineF::rotate() const
另一种是
qreal QLineF::rotate(QLineF ) const
第一种是基于三点钟方向为比较对象,返回正、负与零。
而第二种,由于assistant上没有。但是我测试后发现似乎没有返回负值。造成的后果是一个方向旋转正常,另一个方向不正常
经过几经尝试,我采用了以下用法来解决问题:
QLineF oldLine(ptCenter, ptOld);
QLineF newLine(ptCenter, ptNew);
qreal angle = oldLine.angle()-newLine.angle();
if (angle>=0)
rotate(newLine.angle(oldLine));
else
rotate(-newLine.angle(oldLine));
不知道还有没有好的方法,请高手指教。