Russian Qt Forum
Сентябрь 20, 2024, 02:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отслеживание нажатия двух клавиш на цифровой клавиатуре одновременно  (Прочитано 1024 раз)
rainovsky
Новичок

Offline Offline

Сообщений: 1


Просмотр профиля
« : Июнь 14, 2024, 11:08 »

Привет читаюшим!
Накидал простой код для примера

Код:
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?
Записан
Apktyc
Самовар
**
Offline Offline

Сообщений: 133


Просмотр профиля
« Ответ #1 : Июнь 14, 2024, 14:20 »

Тред не читай @ сразу отвечай

Как минимум btn2 никогда не сбрасывается, ибо в keyReleaseEvent везде btn1 = false;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 23.