Webブラウザも現在はTabブラウザ(e.g. firefox, IE7, opera...)が多くなりましたが、タブでページを切り替えられると便利なことがあります。GTK+ではそれをNotebook Widgetを使って表現します。
#include <gtk/gtk.h> int main(int argc,char *argv[]){ GtkWidget *window; GtkWidget *vbox; GtkWidget *menubar; GtkWidget *tablabel; GtkWidget *label; GtkWidget *label2; GtkWidget *notebook; GtkWidget *statusbar; GtkWidget *file_menu; GtkWidget *help_menu; GtkWidget *File_Item; GtkWidget *Load_item; GtkWidget *Quit_item; GtkWidget *Help_Item; GtkWidget *About_item; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window),"Program"); gtk_window_set_default_size(GTK_WINDOW(window),640,480); vbox=gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(window),vbox); menubar=gtk_menu_bar_new(); gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE,TRUE,0); file_menu=gtk_menu_new(); File_Item=gtk_menu_item_new_with_label("File"); Load_item=gtk_menu_item_new_with_label("Load"); Quit_item=gtk_menu_item_new_with_label("Quit"); gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), Load_item); gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), Quit_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (File_Item), file_menu); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), File_Item); gtk_widget_show(Load_item); gtk_widget_show(Quit_item); gtk_widget_show(File_Item); gtk_widget_show(file_menu); help_menu=gtk_menu_new(); Help_Item=gtk_menu_item_new_with_label("Help"); About_item=gtk_menu_item_new_with_label("About"); gtk_menu_shell_append (GTK_MENU_SHELL (help_menu), About_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (Help_Item), help_menu); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), Help_Item); gtk_widget_show(About_item); gtk_widget_show(Help_Item); gtk_widget_show(help_menu); gtk_widget_show(menubar); tablabel=gtk_label_new("tab"); label=gtk_label_new("Hello World"); label2=gtk_label_new("Hello World2"); notebook=gtk_notebook_new(); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,tablabel); gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label2,NULL); gtk_box_pack_start(GTK_BOX(vbox),notebook,TRUE,TRUE,0); gtk_widget_show(tablabel); gtk_widget_show(label); gtk_widget_show(label2); gtk_widget_show(notebook); statusbar=gtk_statusbar_new(); gtk_box_pack_start(GTK_BOX(vbox),statusbar,FALSE,TRUE,0); gtk_statusbar_push(GTK_STATUSBAR(statusbar),1,"Hello World"); gtk_widget_show(statusbar); gtk_widget_show(vbox); gtk_widget_show(window); g_signal_connect(Quit_item,"activate",gtk_main_quit,NULL); g_signal_connect(window,"destroy",gtk_main_quit,NULL); gtk_main(); return 0; }
内容は前回の「メニューバー+ステータスバー」と殆どかわりませんが、新たにnokebookが追加されています。gtk_notebook_new()でノートブックを作成し、gtk_notebook_append_page()でページを増やしています。このプログラムの場合、ページは2ページあり、1ページ目はタブの名前が「tab」であるのに対し、2ページ目はデフォルトです。