在 GTK3 中,如何让 DrawingArea 响应键盘事件?我应该将绘图区域与信号连接还是更复杂?我正在使用带有 C 语言的 GTK3。
user7948550
问问题
256 次
2 回答
2
我最终在这里找到了解决方案。我只连接了信号,但是还需要为绘图区域设置 GTK_CAN_FOCUS。
于 2019-11-16T17:04:19.107 回答
0
首先,您需要在事件掩码中启用按键(可能还有按键释放):
gtk_widget_add_events(my_drawing_area,
GDK_KEY_PRESS_MASK|GDK_KEY_RELEASE_MASK);
然后您可以连接到信号:
g_signal_connect(my_drawing_area,"key-press-event",
my_key_press,my_user_data);
g_signal_connect(my_drawing_area,"key-release-event",
my_key_release,my_user_data);
并定义一些这样的回调函数:
gboolean my_key_press(GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
return FALSE;
}
gboolean my_key_release(GtkWidget *widget,
GdkEventKey *event,
gpointer user_data)
{
return FALSE;
}
有关更多信息,请参阅GtkWidget、GObject Signals和GdkEvent的文档。
于 2019-07-07T13:27:32.037 回答