gtkmm条目缺少signal_key_press_event上的键

gtkmm entry missing keys on signal_key_press_event

本文关键字:event press key gtkmm signal      更新时间:2023-10-16

,所以我一直在尝试GTKMM,因为我想将一些代码迁移到C ,我认为这会更容易。

我曾经能够在C中使用看起来像这样的东西:

    g_signal_connect(entry, "key-release-event", G_CALLBACK(receiveKeyPressed), NULL);

但是,当我尝试在GTKMM中使用类似系统时,似乎:

    entry->signal_key_pressed().connect( sigc::ptr_fun(*receiveKeyPressed) );

它完全错过了所有键盘,除了换档键和选项卡等。

任何人都可以解释为什么?

首先连接处理程序:

标志:运行最后

#include <gtkmm.h>
#include <iostream>
int main()
{
    auto app = Gtk::Application::create();
    Gtk::Window window;
    Gtk::Entry entry;
    window.add(entry);
    entry.signal_key_press_event().connect([&](GdkEventKey* event)->bool{
            std::cout<<"pressed: "<<std::hex<<event->keyval<<" "<<std::hex<<event->state<<std::endl; 
            return false; //to propagate the event further
        }, false); //run before other handlers (from entry)
    window.show_all();
    return app->run(window);
}