如何替换放大/缩小功能中已弃用的函数`QWheelEvent::delta()`?
我正在使用类中的delta()功能QWheelEvent来实现放大,缩小。现在它已被弃用,他们在文档中建议使用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;
}
}
}
回答
的文档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;
}
}
}
THE END
二维码