我正在修改现有程序,因此没有实现加速器,但是我找到了一种获取加速器的方法,这是我的代码:
GList* accel_groups;
accel_groups = gtk_accel_groups_from_object(G_OBJECT(toplevel_window));
printf("%d\n", g_list_length(accel_groups));
//the length of the list is 1, that's why I don't show you a cicle there, but just get the first element
GtkAccelGroup* accel_group;
accel_group = g_list_nth_data(accel_groups, 0);
printf("%d\n", gtk_accel_group_disconnect(GTK_ACCEL_GROUP(accel_group), NULL));
accel_groups = gtk_accel_groups_from_object(G_OBJECT(toplevel_window));
printf("%d\n", g_list_length(accel_groups));
第一个printf
打印1
,因此窗口中有一个GtkAccelGroup
。
第二printf
打印1
,根据https://developer.gnome.org/gtk2/stable/gtk2-Keyboard-Accelerators.html#gtk-accel-group-disconnect,这表示已找到并停用了加速器。
第三个printf
会再次打印1
,因此窗口仍然有一个GtkAccelGroup
。
是否可以从GtkAccelGroup
中删除window
?由于我的代码,热键在gtk_accel_group_disconnect