方法很简单,下面以给Gtkbutton设置热键为例。
首先介绍要用到的两个函数:
参数介绍:
首先介绍要用到的两个函数:
void
gtk_widget_add_accelerator (GtkWidget
*
widget,
const gchar * accel_signal,
GtkAccelGroup * accel_group,
guint accel_key,
GdkModifierType accel_mods,
GtkAccelFlags accel_flags);
const gchar * accel_signal,
GtkAccelGroup * accel_group,
guint accel_key,
GdkModifierType accel_mods,
GtkAccelFlags accel_flags);
参数介绍:
widget: 需要帮定热键的控件 我们这里是button1
accel_signal : 按下热键后要激活的控件的信号 我们这里是“clicked”
accel_group : 指定一个accel group,这个 accel group将被分配给TopLevel的控件 (主窗体)
accel_key : GDK键值 我们要分配的热键 这里是‘E’键
accel_mods : 组合键(Shift Ctrl之类的)
accel_flags : 设为GTK_ACCEL_VISIBLE
void gtk_window_remove_accel_group (GtkWindow * window,
GtkAccelGroup * accel_group);
将一个GtkAccelGroup加入到窗体中。
下面给我们的button1加上热键:/*注意~!
GDK的键值宏GDK_E包含在<gdk/gdkkeysyms.h>中 我们需要在开头
#include <gdk/gdkkeysyms.h>
*/
GtkWidget * mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); // 要是TOPLEVEL的
GtkWidget * button1 = gtk_button_new();
// 新建一个GtkAccelGroup
GtkAccelGroup * gag = gtk_accel_group_new();
// 设置热键 (不需要组合键,所以accel_mods设为0)
gtk_widget_add_accelerator(button1, " clicked " ,gag,GDK_E, 0 ,GTK_ACCEL_VISIBLE);
// 将GtkAccelGroup设置给主窗体
gtk_window_add_accel_group(GTK_WINDOW(mainWindow),gag);
上面的代码片段就完成了热键的设置,启动你的窗体试试吧。