如何替换放大/缩小功能中已弃用的函数`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;
        }
    }
}