5

我正在学习在 Qt (C++) 中处理按键和按键释放事件。我有一个键盘类,我想用它来处理所有这些事件。它继承了 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 应用程序将所有键盘事件发送到此类的方法,那将非常有帮助!

谢谢,

约翰

4

1 回答 1

7

对于任何想知道的人,我找到了我的问题的答案。

在处理我的键盘事件的类的构造函数中,我添加了这一行:

QWidget::grabKeyboard();

现在,当该应用程序处于活动状态时,所有键盘输入都直接进入该小部件。您可以查看参考以获取更多信息: QWidget::grabKeyboard

注意:在您调用QWidget::releaseKeyboard().

于 2014-08-24T00:11:25.817 回答