如何解决如何替换放大/缩小功能中已弃用的函数`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 举报,一经查实,本站将立刻删除。