keyPressEvent是QWidget里面的函數,所以凡是繼承自QWidget的類都可以通過實現這個函數來完成對按鍵事件的響應。
要讓當前的widget能夠響應按鍵事件,最先需要做的事情是,調用:
setFocusPolicy(Qt::StrongFocus);
接下來就是keyPressEvent方法的聲明與實現了~
// 聲明 void keyPressEvent(QKeyEvent *event);
// 實現 void DisplayGLWidget::keyPressEvent(QKeyEvent* event) { switch (event->key()) { case Qt::Key_Up: mix = (mix + 0.1) > 1 ? 1 : mix + 0.1; std::cout << "mix = " << mix << endl; updateGL(); break; case Qt::Key_Down: mix = (mix - 0.1) < 0 ? 0 : mix - 0.1; std::cout << "mix = " << mix << endl; updateGL(); break; default: break; } }
需要注意的是,響應按鍵事件后,需要updateGL,否則當前窗口不會自動重新繪制。
