Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么没有QTransform::fromRotate?_C++_Qt5 - Fatal编程技术网

C++ 为什么没有QTransform::fromRotate?

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

Qt的QTTransform提供了一些更优化的方法,使用这些静态方法构建转换/缩放QTTransform矩阵:

现在我需要一个旋转的变换,我想最好也有一个
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是开源的,所以你可以深入挖掘源代码,了解他们为什么用另一种方式实现。