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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Общие вопросы / Отслеживание нажатия двух клавиш на цифровой клавиатуре одновременно : Июнь 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?
Страниц: [1]

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