Я пытался реализовать свой собственный виджет, поддерживающий ввод с клавиатуры, предоставленный пользователем, предоставляя себе стандартный код; https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-widgets.html.en с изменением / добавлением следующих строк:
в mywidget. cc, функция; MyWidget::on_realize()
, строка 180
attributes.event_mask = get_events () | Gdk::ALL_EVENTS_MASK;
в mywidget.h, переопределяя два виртуальных метода, унаследованных от Gtk :: Object
bool on_key_release_event(GdkEventKey* key_event) override;
bool on_key_press_event(GdkEventKey* key_event) override;
в mywidget. cc
bool MyWidget::on_key_press_event(GdkEventKey* key_event) {
std::cout << "Key press" << std::endl;
return true;
}
bool MyWidget::on_key_release_event(GdkEventKey* key_event) {
std::cout << "Key press" << std::endl;
return true;
}
однако, похоже, это не сработает, я не получаю сообщений о стандартном выводе вообще, как ни странно, другие события, такие как on_enter_notify_event
, работают нормально, чего мне не хватает?