我在申请中使用KeyPressEvent
。但是从a到z的字母不起作用。
void mywindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Left:
break;
}
}
这是正常的
但是当我使用Key_R
或Key_L
时,它无效。
编辑:keyReleaseEvent适用于这些字母。
答案 0 :(得分:1)
试试这个:
void SimpleWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_R)
{
// Key R was pressed
}
}
或者您只需使用QString QKeyEvent::text () const
方法检查键值。
答案 1 :(得分:0)
不确定你是否还需要它,但也许有人愿意。
我遇到了同样的情况,当按下一个z字母时,没有事件被发送到我的QMainWindow,但ctrl,cmd,alt或esc ......正在工作。
我解决了在构造函数中添加它的问题。
this->setFocusPolicy ( Qt::StrongFocus );
阅读setFocusPolicy doc
然后
MyQMainWindow::keyPressEvent(:keyPressEvent(QKeyEvent *pevent)
{
if (pevent->key() == Qt::Key_Control)
qDebug() << "ctrl pressed";
if (pevent->key() == Qt::Key_A)
qDebug() << "a pressed";
}