лучше перехватить keyPressEvent(QKeyEvent *event) и keyReleaseEvent(QKeyEvent *event)
например:
void myProgram::keyPressEvent(QKeyEvent *event)
{
int key=event->key();
if(key==Qt::Key_W) QMessageBox::information(this,"","Нажата клавиша W");
event->accept();
}
void myProgram::keyReleaseEvent(QKeyEvent *event)
{
int key=event->key();
if(key==Qt::Key_W) QMessageBox::information(this,"","Клавиша W отпущена");
event->accept();
}