我正在学习在Qt (c++)中处理按键和键释放事件。我有一个类Keyboard,我想用它来处理所有这些事件。它继承了QObject。它不需要处理任何鼠标事件。当我的应用程序向该类打开时,我想弄清楚如何指导所有的键盘输入。
我已经尝试添加它作为一个小部件在我的MainWindow类的布局和隐藏它(小部件,不是布局)。当前没有响应。
我也试过在我的MainWindow类:
void MainWindow::keyPressEvent(QKeyEvent *event)
{
keys->keyPressEvent(event);
//Keys is a Keyboard object with this public method:
//void keyPressEvent(QKeyEvent *event);
}
但这也不起作用。在我的Keyboard::Keyboard()构造函数中,我有:
this->setFocusPolicy(Qt::StrongFocus);
我不确定我是否还需要做些什么来确保键盘输入到达那里。
如果有人知道一种方法来发送所有键盘事件到这个类为我的Qt应用程序,这将是非常有帮助!
谢谢,约翰
谁想知道,我找到了我的问题的答案。
在处理键盘事件的类的构造函数中,我添加了这一行:
QWidget::grabKeyboard();
,现在当应用程序处于活动状态时,所有键盘输入都直接进入该小部件。您可以查看参考资料以获取更多信息:QWidget:: grabKeyboard。
注意:在您调用QWidget::releaseKeyboard()
之前,没有其他任何东西(即没有其他小部件)将获得键盘输入。