加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么没有QTransform :: fromRotate?

发布时间:2020-12-16 06:53:53 所属栏目:百科 来源:网络整理
导读:Qt的QTransform提供了一些更优化的方法来使用这些静态方法构建转换/缩放的QTransform矩阵: QTransform::fromScale QTransform::fromTranslate 现在我需要一个旋转变换,我认为还有一个QTransform :: fromRotate会很好.但这个不存在. 在我的情况下,我正在修改
Qt的QTransform提供了一些更优化的方法来使用这些静态方法构建转换/缩放的QTransform矩阵:

> QTransform::fromScale
> QTransform::fromTranslate

现在我需要一个旋转变换,我认为还有一个QTransform :: fromRotate会很好.但这个不存在.

在我的情况下,我正在修改现有的变换,相应鼠标交互,如paning,缩放和旋转.

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开发人员忘了这个.有什么能让这个变得不可能吗?

解决方法

最可能的原因是创建和使用静态函数来创建旋转变换强制总是链接数学库(对于sin(3)和cos(3)数学函数),所以你可以使用特定的构造函数并自己使用它们.

顺便说一下,您可以使用其中一个构造函数来指定用于矩阵元素的常量.在使用转换库时,保留矩阵以便重用是很常见的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读