gpt4 book ai didi

c++ - GTKMM:如何将键盘事件附加到绘图区域?

转载 作者:行者123 更新时间:2023-12-03 12:48:05 26 4
gpt4 key购买 nike

我需要将一个键盘按键事件附加到继承自 DrawingArea 的 Canvas。

我已经在构造函数中的“add_events()”上添加了这些事件,但运行后按键事件没有响应,出了什么问题?

Canvas::Canvas()
:m_dragDataRequestedForDrop(false), m_dropItem(nullptr),m_flag(false)
{
add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK |
Gdk::POINTER_MOTION_MASK | Gdk::KEY_PRESS_MASK |
Gdk::KEY_RELEASE_MASK);

set_app_paintable();
this->set_can_focus(true);
this->signal_key_press_event().connect(sigc::mem_fun(*this,
&Canvas::onDeleteKeyPress));
}


bool Canvas::onDeleteKeyPress(GdkEventKey *p_event)
{
bool m_eventHandlerFlag = false;

if (p_event->type == GDK_KEY_PRESS && p_event->keyval == GDK_KEY_Delete)
{
m_eventHandlerFlag = true;
}
if(m_eventHandlerFlag)
{
std::cout << "Holi DEL" << "\n";
//removeActiveElements();
}
std::cout << "Key pressed: " << p_event->hardware_keycode
<< "\n";
return false;
}

感谢您的帮助

最佳答案

您应该将 GtkDrawArea 放入 GtkEventBox 中,然后从 GtkEventBox 中执行所有操作。据我记得,发生这种情况是因为 GtkDrawArea 没有这些事件。 stackoverflow 中的一篇解释了这一点,但仅限于 GtkImage。我知道,GtkEventBox 中的 GtkDrawArea 可以工作,因为我目前正在编写使用它的应用程序(应用程序是用 c 编写的,但它也应该适用于 c++)。

关于c++ - GTKMM:如何将键盘事件附加到绘图区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52171141/

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