события клавиатуры gtkmm пропустить - PullRequest
0 голосов
/ 15 марта 2020

Есть ли способ отменить событие key_release при определенных условиях? Я пытаюсь объяснить лучше ... Я хочу, чтобы в записи я мог вставлять только цифры, если я вставлю другой символ, это будет пропущено.

.h file

bool on_value_change(GdkEventKey* key_event);

.c ++ файл

 m_TxtDiversi1->signal_key_release_event().connect(sigc::mem_fun(*this, &MainWindow::on_value_change));

bool MainWindow::on_value_change(GdkEventKey* key_event)
{

    if((key_event->keyval >= 48 && key_event->keyval <= 57) || (key_event->keyval >= 65456 && key_event->keyval <= 65465) || key_event->keyval == 65454)
    {
        std::cout << "1ui" << std::endl;
        return true;
    }

    return false;
}

Может кто-нибудь помочь мне, пожалуйста? Большое спасибо заранее.

1 Ответ

0 голосов
/ 15 марта 2020

Я нашел решение

    m_TxtDiversi1->signal_key_press_event().connect(sigc::mem_fun(*this, &MainWindow::on_value_change), false);

    bool MainWindow::on_value_change(GdkEventKey* key_event)
    {
        if((key_event->keyval >= 48 && key_event->keyval <= 57) || (key_event->keyval >= 65456 && key_event->keyval <= 65465) || key_event->keyval == 65454)
        {
            std::cout << "1ui" << std::endl;

            return false;
        }

        return true;
     }
...