GERBER_X3 icon indicating copy to clipboard operation
GERBER_X3 copied to clipboard

Зум колесиком мышки

Open vvv1954 opened this issue 4 years ago • 4 comments

Нельзя ли сделать, чтобы зум менялся колесиком мышки? Как, например, в Aspire или VCarve.

vvv1954 avatar Aug 28 '21 00:08 vvv1954

Можно Меняется здесь

void GraphicsView::wheelEvent(QWheelEvent* event)
{
    const auto delta = event->angleDelta().y();

#if (QT_VERSION < QT_VERSION_CHECK(5, 14, 0))
    const auto pos = event->pos();
#else
    const auto pos = event->position().toPoint();
#endif

    static auto sbUpdate = [&delta, this, scale = 3](QScrollBar* sb) { // Warning if create more GraphicsView`s!!
        if (App::settings().guiSmoothScSh())
            animate(sb, "value", sb->value(), sb->value() - sb->pageStep() / (delta > 0 ? +scale : -scale));
        else
            sb->setValue(sb->value() - delta);
    };

    if (event->buttons() & Qt::RightButton) {
        if (abs(delta) == 120) {
            setInteractive(false);
            if (delta > 0)
                zoomIn();
            else
                zoomOut();
            setInteractive(true);
        }
    } else {
        switch (event->modifiers()) {
        case Qt::ControlModifier:
            if (abs(delta) == 120) {
                setInteractive(false);
                if (delta > 0)
                    zoomIn();
                else
                    zoomOut();
                setInteractive(true);
            }
            break;
        case Qt::ShiftModifier:
            if (!event->angleDelta().x())
                sbUpdate(QAbstractScrollArea::horizontalScrollBar());
            break;
        case Qt::NoModifier:
            if (!event->angleDelta().x())
                sbUpdate(QAbstractScrollArea::verticalScrollBar());
            break;
        default:
            //QGraphicsView::wheelEvent(event);
            return;
        }
    }
    mouseMove(mapToScene(pos));
    event->accept();
    update();
}

XRay3D avatar Sep 06 '21 12:09 XRay3D

Спасибо. Какая версия VS?

vvv1954 avatar Sep 07 '21 01:09 vvv1954

Спасибо. Какая версия VS?

VC C++ самый последний и Qt5.12.11 VS2017

XRay3D avatar Sep 08 '21 09:09 XRay3D

Будет переработано, рулетка отдельным инструментом станет.

XRay3D avatar Dec 02 '21 18:12 XRay3D

Колесо зумит при зажатой правой.

XRay3D avatar Mar 08 '24 17:03 XRay3D