void NHelpDialog::keyPressEvent(QKeyEvent *event) { switch (event->key( )) { case Qt::Key_PageUp: case Qt::Key_PageDown: { QScrollBar *vbar = textScrollArea->verticalScrollBar( ); if (vbar) { switch (event->key()) { case Qt::Key_PageUp: vbar->triggerAction(QAbstractSlider::SliderPageStepSub); break; case Qt::Key_PageDown: vbar->triggerAction(QAbstractSlider::SliderPageStepAdd); break; } } } break; case Qt::Key_HomePage: case Qt::Key_Escape: case Qt::Key_Left: case Qt::Key_Help: case Qt::Key_Enter: case Qt::Key_MediaRecord: case Qt::Key_MediaPlay: this->close( ); break; default: break; } }
void MainWindow::keyPressEvent(QKeyEvent *e) { if (e->key() == Qt::Key_Up) { // meh.. try faking it QScrollBar *vscroll = ui->graphicsView->verticalScrollBar(); vscroll->triggerAction(QScrollBar::SliderSingleStepSub); // scrolls entire widget (not just viewport) //ui->graphicsView->scroll(0, 10); //scroll(0, 10); // not necessary: starts as accepted //e->accept(); return; } else if (e->key() == Qt::Key_Down) { // meh.. try faking it QScrollBar *vscroll = ui->graphicsView->verticalScrollBar(); vscroll->triggerAction(QScrollBar::SliderSingleStepAdd); // ok, this gives us both current scaling // and current translation (scrolled position) // of the view //QTransform vptr = ui->graphicsView->viewportTransform(); // translate() seems to want absolute coordinates // instead of relative delta?? //ui->graphicsView->translate(0, 100); // scrolls entire widget (not just viewport) //ui->graphicsView->scroll(0, -10); //scroll(0, -10); // drawing isn't correct but at least affects actual image.. //ui->graphicsView->viewport()->scroll(0, -10); return; } // pass to base-class QMainWindow::keyPressEvent(e); }