XRay3D / GERBER_X3

Program for preparing G-code for milling of printed circuit boards on CNC. You can use it as a converter to a PDF file.
198 stars 50 forks source link

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

Closed vvv1954 closed 9 months ago

vvv1954 commented 3 years ago

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

XRay3D commented 3 years ago

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

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();
}
vvv1954 commented 3 years ago

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

XRay3D commented 3 years ago

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

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

XRay3D commented 3 years ago

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

XRay3D commented 9 months ago

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