QApplication не обрабатывает событие ключа?

QApplication app(argc, 0);
MyDialog * pDlg = new MyDialog(0, Qt::WindowTitleHint | Qt::CustomizeWindowHint);
if (qApp) qApp->installEventFilter(pDlg);

В main() я просто устанавливаю фильтр событий для qApp. Затем в MyDialog.cpp:

bool MyDialog::eventFilter(QObject * watched, QEvent * event)
{
    if (watched == qApp)
    {
        if (event->type() == QEvent::KeyPress)
        {
            // do something
            return true;
        }
        return false;
    }
    return QDialog::eventFilter(watched, event);
}

Я установил несколько точек останова. строка "return false" может быть достигнута, это означает, что qApp успешно установил фильтр событий в MyDialog. Но строка "вернуть истину" никогда не достигается, когда я нажимаю на клавиатуру. Я помню, что QApplication будет отправлять все события. Кто-нибудь может сказать мне, почему это произошло?

1 ответ

Используйте keyPressEvent.

void MyDialog::keyPressEvent(QKeyEvent *e)
{
// do something
}
Другие вопросы по тегам