qt - 拦截Tab键按下可手动管理焦点切换

标签 qt event-handling qt4 qt5 keyevent

我想拦截主窗口中的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);
}

这不起作用,当我按Tab时没有调用event。如何实现我想要的?

最佳答案

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

像其他键一样,您现在也可以在Qt::Key_Tab中找到keyPressEvent(QKeyEvent* event)

关于qt - 拦截Tab键按下可手动管理焦点切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160051/

相关文章:

c++ - 如何为可检查的 QPushButton 后代更改背景颜色?

c++ - QT中的程序终止回调?

c# - FileSystemWatcher 在一段时间后停止引发事件

c++ - 在 Qt 之外实现隐式共享类

具有 ARGB32 的 Linux 帧缓冲区。 Α?帧缓冲区如何支持 Alpha?

c++ - 如何使用 C++ 继承和扩展 QCalendarWidget

c++ - 处理 360 度范围的最佳方式

c++ - 是否可以将模型对象的插槽连接到 QT4 -Designer 中的 GUI?

javascript - 如何捕获右键单击javascript中的指定元素?

javascript - JavaScript 中的事件处理程序是否按顺序调用?