C++ gtkmm:如何检测箭头键被按下

C++ gtkmm:如何检测箭头键被按下,c++,keypress,gtkmm,C++,Keypress,Gtkmm,当用户在窗口中时,我可以连接到什么事件来检测箭头键被按下 到目前为止,我已尝试通过按键事件上的进行连接,并选中了keyval、hardware\u keycode和state #include <gtkmm.h> #include <iostream> class MyWindow : public Gtk::Window { public: MyWindow(); bool onKeyPress(GdkEventKey*); }; MyWindow:

当用户在窗口中时,我可以连接到什么事件来检测箭头键被按下

到目前为止,我已尝试通过按键事件上的
进行连接,并选中了
keyval
hardware\u keycode
state

#include <gtkmm.h>
#include <iostream>

class MyWindow : public Gtk::Window
{
public:
    MyWindow();
    bool onKeyPress(GdkEventKey*);
};

MyWindow::MyWindow()
{
    set_title("arrow_button_test");
    this->signal_key_press_event().connect( sigc::mem_fun( *this, &MyWindow::onKeyPress ) );
}

bool MyWindow::onKeyPress(GdkEventKey* event)
{
    std::cout << event->keyval << ' ' << event->hardware_keycode << ' ' << event->state << std::endl;

    return false;
}

int main(int argc, char** argv)
{
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "com.almost-university.gtkmm.arrow_button_press");

    MyWindow window;    

    app->run(window);

    return 0;
}
#包括
#包括
类MyWindow:公共Gtk::Window
{
公众:
MyWindow();
bool onKeyPress(GdkEventKey*);
};
MyWindow::MyWindow()
{
设置标题(“箭头按钮测试”);
this->signal_key_press_event().connect(sigc::mem_fun(*this,&MyWindow::onKeyPress));
}
bool MyWindow::onKeyPress(GdkEventKey*事件)
{
std::cout keyval如果您更改

this->signal_key_press_event().connect(
    sigc::mem_fun(*this, &MyWindow::onKeyPress));


您的信号处理程序应该接收事件。该
false
参数用于
after
标志。默认情况下,它是
true
,这意味着其他信号处理程序可以在
MyWindow::onKeyPress
之前截获信号,因为它是最后一个信号。

进行否决表决的目的是什么?请发表评论并说出wh至少我应该做些什么来提出这个问题。我做了搜索,以前没有人问过这样的问题,阅读文档也不清楚。我还提供了代码和我的推理。
this->signal_key_press_event().connect(
    sigc::mem_fun(*this, &MyWindow::onKeyPress), false);