Привет читаюшим!
Накидал простой код для примера
void MainWindow::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_1 && event->modifiers().testFlag(Qt::KeypadModifier)) {
btn1 = true;
} else if (event->key() == Qt::Key_2 && event->modifiers().testFlag(Qt::KeypadModifier)) {
btn2 = true;
}
print();
QMainWindow::keyPressEvent(event);
}
void MainWindow::keyReleaseEvent(QKeyEvent *event) {
qDebug() <<"Reliased: " << event->key();
if (event->key() == Qt::Key_1 && event->modifiers().testFlag(Qt::KeypadModifier)) {
btn1 = false;
} else if (event->key() == Qt::Key_2 && event->modifiers().testFlag(Qt::KeypadModifier)) {
btn1 = false;
}
print();
QMainWindow::keyReleaseEvent(event);
}
void MainWindow::print()
{
if(btn1 && btn2){
label->setText("1 + 2 is pressed");
} else if(btn2){
label->setText("2 is pressed");
} else if(btn1){
label->setText("1 is pressed");
} else {
label->setText("No one button is pressed");
}
}
Вопрос вот в чем.
Если нажимать по отдельности, то работает нормально. Если нажать сначала одну клавишу, предположим 1, а потом нажать 2, то показывает, что нажата только 2, и если потом отпустить 1, то вообще покажет, что никакая не нажата.
Если убать проверку
event->modifiers().testFlag(Qt::KeypadModifier)
, то на основной клавиатуре работает корректно.
Если возможность отсдслеживать нажатие двух клавиш на numpad?