12.6.4 使用菜单
(1)创建菜单
GtkWidget * gtk_menu_new() GtkWidget * gtk_menu_new_with_label(gchar *label) |
(2)生成菜单项
GtkWidget * gtk_menu_item_new() GtkWidget * gtk_menu_item_new_with_label(gchar *label) |
(3)插入菜单项
void gtk_menu_append(GtkMenu *menu,GtkWidget *child) void gtk_menu_set_submenu(GtkMenuItem *item GtkMenu *menu) |
(4)创建菜单条
GtkWidget *gtk_menu_bar_new(void) |
(5)向菜单条中加入菜单
void gtk_menu_bar_append(GtkMenuBar *bar, GtkWidget *child) |
创建菜单的步骤如下。
① 使用gtk_menu_new()或gtk_menu_new_with_label()生成一个新菜单。
② 使用gtk_menu_item_new()或gtk_menu_new_with_label()生成一个新的菜单项,然后使用gtk_menu_append()将菜单项加入到菜单中。
③ 使用gtk_menu_item_new()或gtk_menu_new_with_label()创建主菜单。
④ 使用gtk_menu_set_submenu()将各个菜单加入到主菜单中。
⑤ 使用gtk_menu_bar_new()创建菜单条。然后使用gtk_menu_bar_append()把主菜单加入到菜单条上。
例12-8 创建菜单,程序名为menu.c。
#include<gtk/gtk.h> int main(int argc,char **argv) { GtkWidget *window; GtkWidget *menu; GtkWidget *menubar; GtkWidget *rootmenu; GtkWidget *menuitem;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),"Menu Demo"); g_signal_connect(GTK_OBJECT(window),"destroy", GTK_SIGNAL_FUNC(gtk_main_quit),NULL); gtk_container_border_width(GTK_CONTAINER(window),20);
/*创建一个新菜单,然后创建3个菜单项,并把这3个菜单项加入到菜单中*/ menu = gtk_menu_new();
menuitem = gtk_menu_item_new_with_label("New"); gtk_menu_append(GTK_MENU(menu),menuitem); gtk_widget_show(menuitem);
menuitem = gtk_menu_item_new_with_label("Open"); gtk_menu_append(GTK_MENU(menu),menuitem); gtk_widget_show(menuitem);
menuitem = gtk_menu_item_new_with_label("Close"); gtk_menu_append(GTK_MENU(menu),menuitem); gtk_widget_show(menuitem);
/*创建一个主菜单*/ rootmenu = gtk_menu_item_new_with_label("File"); gtk_widget_show(rootmenu);
/*将菜单加入到主菜单中*/ gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),menu); /*创建菜单条*/ menubar = gtk_menu_bar_new(); /*将主菜单条加入到菜单条中*/ gtk_menu_bar_append(GTK_MENU_BAR(menubar),rootmenu);
/*使用同样的方法,创建第二组菜单*/ menu = gtk_menu_new(); menuitem = gtk_menu_item_new_with_label("Cut"); gtk_menu_append(GTK_MENU(menu),menuitem); gtk_widget_show(menuitem);
menuitem = gtk_menu_item_new_with_label("Paste"); gtk_menu_append(GTK_MENU(menu),menuitem); gtk_widget_show(menuitem);
rootmenu = gtk_menu_item_new_with_label("Edit"); gtk_widget_show(rootmenu);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu),menu); gtk_menu_bar_append(GTK_MENU_BAR(menubar),rootmenu);
/*将菜单条加入到窗口中,并显示菜单条和窗口*/ gtk_container_add(GTK_CONTAINER(window),menubar); gtk_widget_show(menubar); gtk_widget_show(window);
gtk_main();
return 0; } |
程序运行后的界面如图12-9所示。
 |
| 图12-9 运行结果界面 |