我在我的应用程序中使用KeyPressEvent
。但是从 a 到 z 的字母不起作用。
void mywindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Left:
break;
}
}
这工作正常
但是当我使用Key_R
或Key_L
它不起作用时。
编辑:keyReleaseEvent使用这些字母。
试试这个:
void SimpleWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_R)
{
// Key R was pressed
}
}
或者,您可以使用QString QKeyEvent::text () const
方法简单地检查键值。
不确定你还需要它,但也许有人会。
我处于同样的情况,当按 a 到 z 字母时,没有事件发送到我的 QMainWindow,但 ctrl、cmd、alt 或 esc...正在工作。
我解决了在构造函数中添加它的问题。
this->setFocusPolicy ( Qt::StrongFocus );
阅读集焦点策略文档
然后
MyQMainWindow::keyPressEvent(:keyPressEvent(QKeyEvent *pevent)
{
if (pevent->key() == Qt::Key_Control)
qDebug() << "ctrl pressed";
if (pevent->key() == Qt::Key_A)
qDebug() << "a pressed";
}