예제 #1
0
bool BaseViewer::zoomOnWheelEvent(QEvent * e)
{
    if (e->type() == QEvent::Wheel)
    {
        QWheelEvent * event = static_cast<QWheelEvent*>(e);
        // mouse has X units that covers 360 degrees. Zoom when 15 degrees is provided
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
        QPoint numDegrees = event->angleDelta() / 8;
#else
        QPoint numDegrees(0,event->delta() / 8);
#endif
        if (!numDegrees.isNull())
        {
            if (numDegrees.y() >= 15)
            { // Zoom in
                if (_zoomLevel+1<=_zoomMaxLevel)
                    centerOnAtZoom(_zoomLevel+1);
            }
            else if (numDegrees.y() <= -15)
            { // Zoom out
                if (_zoomLevel-1>=_zoomMinLevel)
                    centerOnAtZoom(_zoomLevel-1);
            }
            event->accept();
            return true;
        }
        return true;
    }
    return false;
}
예제 #2
0
bool Widget::eventFilter(QObject *, QEvent *event)
{
    if (event->type() == QEvent::Wheel)
    {
        QWheelEvent * whlEvnt =  static_cast< QWheelEvent * >( event );
        whlEvnt->angleDelta().setX(0);
    }
    return false;
}
예제 #3
0
bool MainWindow::eventFilter(QObject * /*obj*/, QEvent *event)
{
    if (event->type() == QEvent::Wheel) {
        QWheelEvent *wheelEvent = (QWheelEvent*)event;
        QSlider *slider = nullptr;
        if (QApplication::keyboardModifiers() & Qt::ControlModifier) {
            slider = dock->zoomLevelSlider;
        } else if (QApplication::keyboardModifiers() & Qt::ShiftModifier) {
            slider = dock->fftSizeSlider;
        }
        if (slider != nullptr) {
            if (wheelEvent->angleDelta().y() > 0) {
                slider->setValue(slider->value() + 1);
            } else if (wheelEvent->angleDelta().y() < 0) {
                slider->setValue(slider->value() - 1);
            }
            return true;
        }
    }
    return false;
}
bool UIGraphicsScrollArea::eventFilter(QObject *pObject, QEvent *pEvent)
{
    /* Handle layout requests for m_pViewport if set: */
    if (   m_pViewport
        && pObject == m_pViewport
        && pEvent->type() == QEvent::LayoutRequest)
        layoutWidgets();

    /* Handle wheel events for first scene view if set: */
    if (   scene()
        && !scene()->views().isEmpty()
        && pObject == scene()->views().first()
        && pEvent->type() == QEvent::Wheel)
    {
        QWheelEvent *pWheelEvent = static_cast<QWheelEvent*>(pEvent);
        const QPoint angleDelta = pWheelEvent->angleDelta();
#ifdef VBOX_WS_MAC
        const QPoint pixelDelta = pWheelEvent->pixelDelta();
#endif
        switch (m_enmOrientation)
        {
            /* Scroll viewport horizontally: */
            case Qt::Horizontal:
            {
                if (angleDelta.x() > 0)
                    m_pScrollBar->setValue(m_pScrollBar->value() - m_pScrollBar->step());
                else if (angleDelta.x() < 0)
                    m_pScrollBar->setValue(m_pScrollBar->value() + m_pScrollBar->step());
                break;
            }
            /* Scroll viewport vertically: */
            case Qt::Vertical:
            {
                if (angleDelta.y() > 0)
#ifdef VBOX_WS_MAC
                    m_pScrollBar->setValue(m_pScrollBar->value() - pixelDelta.y());
#else
                    m_pScrollBar->setValue(m_pScrollBar->value() - m_pScrollBar->step());
#endif
                else if (angleDelta.y() < 0)
#ifdef VBOX_WS_MAC
                    m_pScrollBar->setValue(m_pScrollBar->value() - pixelDelta.y());
#else
                    m_pScrollBar->setValue(m_pScrollBar->value() + m_pScrollBar->step());
#endif
                break;
            }
        }