问题描述
我使用 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;
}
}
}