在 GTK3 中,如何获得 DrawingArea 来响应键盘事件?
In GTK3, how do I get a DrawingArea to respond keyboard events?
在 GTK3 中,如何获得 DrawingArea 来响应键盘事件?
我应该将 DrawingArea 与信号连接还是更复杂?
我在 C 语言中使用 GTK3。
首先您需要在事件掩码中启用按键(可能还有按键释放):
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 and GdkEvent 的文档。
我终于找到了解决方案here。我只接了信号,但是绘图区还需要设置GTK_CAN_FOCUS
在 GTK3 中,如何获得 DrawingArea 来响应键盘事件? 我应该将 DrawingArea 与信号连接还是更复杂? 我在 C 语言中使用 GTK3。
首先您需要在事件掩码中启用按键(可能还有按键释放):
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 and GdkEvent 的文档。
我终于找到了解决方案here。我只接了信号,但是绘图区还需要设置GTK_CAN_FOCUS