截取Tab键按下可手动管理焦点切换

Vio*_*ffe 5 qt qt4 keyevent event-handling qt5

我想拦截Tab主窗口中的按键以防止Qt切换焦点.这是我到目前为止所尝试的:

bool CMainWindow::event(QEvent * e)
{
    if (e && e->type() == QEvent::KeyPress)
    {
        QKeyEvent * keyEvent = dynamic_cast<QKeyEvent*>(e);
        if (keyEvent && keyEvent->key() == Qt::Key_Tab)
            return true;
    }
    return QMainWindow::event(e);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,event按下时不调用Tab.如何实现我想要的?

pi3*_*pi3 8

我发现避免焦点更改的最优雅方式是在类中重新实现从QWidget派生的方法bool focusNextPrevChild(bool next)并简单地返回FALSE.如果你想允许它,请返回TRUE.

与其他键一样,你现在还弄的关键Qt::Key_TabkeyPressEvent(QKeyEvent* event)


Vio*_*ffe 4

重新实现virtual bool QApplication::notify(QObject * receiver, QEvent * e)并粘贴我的问题中的代码是可行的。