Qt的QTransform提供了一些更优化的方式来构造平移/缩放的QTransform矩阵,可以使用这些静态方法:
现在我需要一个旋转的变换,我认为也有一个 QTransform :: fromRotate 就好了。但是它不存在。
在我的案例中,我根据鼠标交互(如平移,缩放和旋转)来修改现有的变换。
void MapDrawingItem::wheelEvent(QWheelEvent* event)
{
//Moving the hovered point to the top left point on screen
m_view_transform *= QTransform::fromTranslate(-event->posF().x(), -event->posF().y());
//Apply transformations accordingly
if((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier)
m_view_transform *= QTransform().rotate(event->delta() / 30.);
else
{
auto factor = qPow(1.001, event->delta());
m_view_transform *= QTransform::fromScale(factor, factor);
}
//Move the hovered point back to the mouse cursor
m_view_transform *= QTransform::fromTranslate(event->posF().x(), event->posF().y());
emit signalViewTransformChanged(m_view_transform);
update();
}
这段代码运行正常,但我想用QTransform::fromRotate(...)
替换QTransform().rotate(...)
。
为什么这个方法还不存在?我无法想象Qt开发人员会忘记这个。有没有什么原因导致这不可能实现?