我使用QWheelEvent
类的delta()
函数来实现放大,缩小。现在已弃用,他们在文档中建议使用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;
}
}
}