Обработка нажатия на Esc в QDialog выглядит так...
void QDialog::keyPressEvent(QKeyEvent *e)
{
// Calls reject() if Escape is pressed. Simulates a button
// click for the default button if Enter is pressed. Move focus
// for the arrow keys. Ignore the rest.
{some code }
case Qt::Key_Escape:
reject();
break;
};
т.е. можно перекрыть keyPressEvent.
void MyDialog::keyPressEvent(QKeyEvent *e) {
if(e->key() != Qt::Key_Escape)
return QDialog::keyPressEvent(e);
};