微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何替换放大/缩小功能中已弃用的函数`QWheelEvent::delta()`?

如何解决如何替换放大/缩小功能中已弃用的函数`QWheelEvent::delta()`?

我使用 delta() 类中的 QWheelEvent 函数来实现放大、缩小。现在它被弃用,他们建议在 documentation 中使用 pixelDelta()angleDelta() 代替,但它们是 QPoint 对象!

谁能告诉我如何用另一个函数替换这个已弃用的函数

void MapView::wheelEvent(QWheelEvent *event)
{
    if(event->delta()>0)
    {
        if(m_scale < MAX_SCALE)
        {
            std::cout << m_scale << std::endl;
            this->scale(ZOOM_STEP,ZOOM_STEP);
            m_scale *= ZOOM_STEP;
        }
    }
    else if(event->delta() < 0)
    {
        if(m_scale >= MIN_SCALE)
        {
            std::cout << m_scale << std::endl;
            this->scale(1/ZOOM_STEP,1/ZOOM_STEP);
            m_scale *= 1/ZOOM_STEP;
        }
    }

}

解决方法

documentation of angleDelta 表示 angleDelta().y() 将返回 垂直 鼠标滚轮旋转的角度,angleDelta().x() 将返回 >水平鼠标滚轮已旋转。

对于缩放,我假设您要使用垂直滚动,因此相应地更改条件会给出:

void MapView::wheelEvent(QWheelEvent *event)
{
    if(event->angleDelta().y() > 0)
    {
        if(m_scale < MAX_SCALE)
        {
            std::cout << m_scale << std::endl;
            this->scale(ZOOM_STEP,ZOOM_STEP);
            m_scale *= ZOOM_STEP;
        }
    }
    else if(event->angleDelta().y() < 0)
    {
        if(m_scale >= MIN_SCALE)
        {
            std::cout << m_scale << std::endl;
            this->scale(1/ZOOM_STEP,1/ZOOM_STEP);
            m_scale *= 1/ZOOM_STEP;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。