Qt QApplication不处理密钥事件?

Qt QApplication不处理密钥事件?,qt,qt4.7,qdialog,qevent,qkeyevent,Qt,Qt4.7,Qdialog,Qevent,Qkeyevent,在main()中,我只是为qApp安装了一个事件过滤器。然后在MyDialog.cpp中: QApplication app(argc, 0); MyDialog * pDlg = new MyDialog(0, Qt::WindowTitleHint | Qt::CustomizeWindowHint); if (qApp) qApp->installEventFilter(pDlg); 我设置了一些断点。可以到达“return false”行,这意味着qApp已经成功地在MyDial

在main()中,我只是为qApp安装了一个事件过滤器。然后在MyDialog.cpp中:

QApplication app(argc, 0);
MyDialog * pDlg = new MyDialog(0, Qt::WindowTitleHint | Qt::CustomizeWindowHint);
if (qApp) qApp->installEventFilter(pDlg);
我设置了一些断点。可以到达“return false”行,这意味着qApp已经成功地在MyDialog上安装了事件过滤器。但当我按下键盘时,并没有到达“returntrue”行。我记得QApplication将调度所有事件。有谁能告诉我为什么会这样吗?

请使用

我犯了一个愚蠢的错误。如果(wasted==qApp)错误,“wasted”是准备接收事件的obj,而不是将事件转发给观察者的qApp。
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);
}
void MyDialog::keyPressEvent(QKeyEvent *e)
{
// do something
}