/*! Processes the key press event \a e. */ void QGLView::keyPressEvent(QKeyEvent *e) { QGLCamera *camera; qreal sep; if ((d->options & QGLView::CameraNavigation) == 0) { QGLWidget::keyPressEvent(e); return; } switch (e->key()) { case Qt::Key_Escape: case Qt::Key_Q: { if (parentWidget() == 0) close(); } case Qt::Key_Left: { if ((e->modifiers() & Qt::ShiftModifier) != 0) { pan(-10, 0); } else if ((e->modifiers() & Qt::ControlModifier) != 0) { camera = this->camera(); sep = camera->eyeSeparation(); sep -= (sep / 10.0f); if (sep < 0.0f) sep = 0.0f; camera->setEyeSeparation(sep); e->accept(); return; } else { rotate(-10, 0); } } break; case Qt::Key_Right: { if ((e->modifiers() & Qt::ShiftModifier) != 0) { pan(10, 0); } else if ((e->modifiers() & Qt::ControlModifier) != 0) { camera = this->camera(); sep = camera->eyeSeparation(); sep += (sep / 10.0f); camera->setEyeSeparation(sep); e->accept(); return; } else { rotate(10, 0); } } break; case Qt::Key_Up: { if ((e->modifiers() & Qt::ControlModifier) != 0) wheel(120); else if ((e->modifiers() & Qt::ShiftModifier) != 0) pan(0, -10); else rotate(0, -10); } break; case Qt::Key_Down: { if ((e->modifiers() & Qt::ControlModifier) != 0) wheel(-120); else if ((e->modifiers() & Qt::ShiftModifier) != 0) pan(0, 10); else rotate(0, 10); } break; } QGLWidget::keyPressEvent(e); }
bool QGLGraphicsNavigationItemPrivate::handleKeyPress(QKeyEvent *e) { QGLCamera *camera; qreal sep; if ((viewportItem->options() & QGLGraphicsViewportItem::CameraNavigation) == 0) { return false; } switch (e->key()) { case Qt::Key_Left: { if ((e->modifiers() & Qt::ShiftModifier) != 0) { pan(-10, 0); } else if ((e->modifiers() & Qt::ControlModifier) != 0) { camera = viewportItem->camera(); sep = camera->eyeSeparation(); sep -= (sep / 10.0f); if (sep < 0.0f) sep = 0.0f; camera->setEyeSeparation(sep); e->accept(); } else { rotate(-10, 0); } } break; case Qt::Key_Right: { if ((e->modifiers() & Qt::ShiftModifier) != 0) { pan(10, 0); } else if ((e->modifiers() & Qt::ControlModifier) != 0) { camera = viewportItem->camera(); sep = camera->eyeSeparation(); sep += (sep / 10.0f); camera->setEyeSeparation(sep); e->accept(); return true; } else { rotate(10, 0); } } break; case Qt::Key_Up: { if ((e->modifiers() & Qt::ControlModifier) != 0) wheel(120); else if ((e->modifiers() & Qt::ShiftModifier) != 0) pan(0, -10); else rotate(0, -10); } break; case Qt::Key_Down: { if ((e->modifiers() & Qt::ControlModifier) != 0) wheel(-120); else if ((e->modifiers() & Qt::ShiftModifier) != 0) pan(0, 10); else rotate(0, 10); } break; default: return false; } return true; }