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