gpt4 book ai didi

c++ - gtkmm:如何检测箭头键是否被按下

转载 作者:行者123 更新时间:2023-11-30 03:40:07 26 4
gpt4 key购买 nike

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

到目前为止,我已尝试通过 on_key_press_event 进行连接,并检查了 keyvalhardware_keycodestate

#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;
}

此代码不会在箭头键上生成任何输出,这意味着该事件甚至不会被触发。

最佳答案

如果你改变

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

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

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

关于c++ - gtkmm:如何检测箭头键是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com