Я пытаюсь реализовать функцию масштабирования в моей программе, когда колесо прокрутки мыши перемещается. Код, кажется, работает, за исключением того, что он увеличивает масштаб прокрутки колеса вверх или вниз.
Я отлаживаю печать колеса angleDelta, и это какое-то постоянное, огромное число. Я не смог найти никого в Интернете, у которого была такая же проблема.
bool MyClass::eventFilter(QObject *obj, QEvent *event)
{
QWheelEvent* wheel_event = static_cast<QWheelEvent*>(event);
switch (static_cast<int>(event->type()))
{
case QEvent::GraphicsSceneWheel:
{
if (QApplication::keyboardModifiers() & Qt::ControlModifier)
{
const QGraphicsView::ViewportAnchor anchor = view->transformationAnchor();
view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
int angle = wheel_event->angleDelta().y();
qreal factor;
qDebug() << "Ctrl + Wheel Event! Angle = " << angle << wheel_event->angleDelta().y() << wheel_event->pixelDelta().y() << wheel_event->delta() << wheel_event->angleDelta();
if (angle > 0)
{
factor = 1.1;
} else
{
factor = 0.9;
}
view->scale(factor, factor);
view->setTransformationAnchor(anchor);
break;
}
}
}
}
Я ожидаю увидеть отрицательные числа при прокрутке вниз, но все значения, которые я печатаю, никогда не меняются, независимо от направления прокрутки. В этом коде view является указателем на объект QGraphicsView.