我正在学习在 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 应用程序将所有键盘事件发送到此类的方法,那将非常有帮助!
谢谢,
约翰
最佳答案
对于任何想知道的人,我找到了问题的答案。
在处理我的键盘事件的类的构造函数中,我添加了这一行:
QWidget::grabKeyboard();
现在,当该应用程序处于事件状态时,所有键盘输入都会直接进入该小部件。 您可以查看引用以获取更多信息: QWidget::grabKeyboard .
注意:在您调用 QWidget::releaseKeyboard()
之前,其他任何东西(即没有其他小部件)都不会获得键盘输入。
关于c++ - 始终将焦点策略放在隐藏的小部件上? (Qt C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467136/