Буквы клавиатуры от a до z не работают в keyPressEvent в Qt

я использую KeyPressEvent в моем приложении. Но буквы от а до я не работают.

void mywindow::keyPressEvent(QKeyEvent *event)
{
switch(event->key())
{
case Qt::Key_Left:
break;
}
}

Это работает правильно

Но когда я использую Key_R или же Key_L это не работает.

Редактировать: keyReleaseEvent работает с этими буквами.

1

Решение

Попробуй это:

void SimpleWidget::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_R)
{
// Key R was pressed
}
}

Или вы можете просто проверить значение ключа, используя QString QKeyEvent::text () const метод.

1

Другие решения

Не уверен, что вам все еще это нужно, но, может быть, кто-то будет.

Я был в той же ситуации, когда нажимал буквы 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";
}
0

По вопросам рекламы [email protected]