我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 );
阅读setFocusPolicy文档
然后
MyQMainWindow::keyPressEvent(:keyPressEvent(QKeyEvent *pevent)
{
if (pevent->key() == Qt::Key_Control)
qDebug() << "ctrl pressed";
if (pevent->key() == Qt::Key_A)
qDebug() << "a pressed";
}