C++ 为什么没有QTransform::fromRotate?
Qt的QTTransform提供了一些更优化的方法,使用这些静态方法构建转换/缩放QTTransform矩阵:C++ 为什么没有QTransform::fromRotate?,c++,qt5,C++,Qt5,Qt的QTTransform提供了一些更优化的方法,使用这些静态方法构建转换/缩放QTTransform矩阵: 现在我需要一个旋转的变换,我想最好也有一个QTransform::fromRotate。但这个并不存在 在我的例子中,我根据鼠标的交互(如平移、缩放和旋转)修改了现有的变换 void MapDrawingItem::wheelEvent(QWheelEvent* event) { //Moving the hovered point to the top left po
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().rotate(…)
替换为QTransform::fromRotate(…)
为什么这个方法还不存在?我无法想象Qt开发人员会忘记这一点。有什么使这不可能的吗?最可能的原因是创建并使用静态函数来创建旋转变换力,以始终链接数学库(对于
sin(3)
和cos(3)
数学函数)因此,您可以使用特定的构造函数并自己使用它们
顺便说一下,您可以使用其中一个构造函数来指定用于矩阵元素的常量。在使用转换库时,保存矩阵以供重用是很常见的。只实现所需的是正常的。。。。你也许可以提出这个建议,但我认为与此相关的实施问题。可能无法将同一矩阵用于不同的旋转,而必须使用非静态实例。但是QT是开源的,所以你可以深入挖掘源代码,了解他们为什么用另一种方式实现。