В GTK3, как мне получить DrawingArea для ответа на события клавиатуры? - PullRequest
0 голосов
/ 07 июля 2019

В GTK3 как получить DrawingArea для ответа на события клавиатуры? Должен ли я подключить DrawingArea с помощью сигнала или он более сложный? Я использую GTK3 с языком C.

1 Ответ

0 голосов
/ 07 июля 2019

Сначала необходимо включить нажатия клавиш (и, возможно, также нажатия клавиш) в маске события:

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 для получения дополнительной информации.

...