バッキングボックスを使って二つのボタンをウィンドウに貼り付ける


ウィンドウウェジェットに直接貼り付けられるウェジェットは1つに限られています。
そこで、いくつでもウェジェットの貼り付けが可能なバッキングボックスというインターフェースを一枚用意し、それをウィンドウウェジェットに張るようにします。


#include<gtk/gtk.h>

int main(int argc, char *argv[]){
GtkWidget *window;

//gtk+を初期化
gtk_init(&argc, &argv);

//ウィンドウェジェットを作成
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

//ウィンドウの大きさを指定
gtk_widget_set_size_request(window, 600, 400);

//パッキンボックスを作成
GtkWidget *vbox;
vbox = gtk_vbox_new(FALSE,2);

//パッキンボックスをwindowに貼り付ける
gtk_container_add(GTK_CONTAINER(window), vbox);


//ボタンを作成
GtkWidget *button1;
button1 = gtk_button_new_with_label("quit");

//ボタンをクリックした時のコールバック関数を登録
g_signal_connect(G_OBJECT(button1), "clicked", G_CALLBACK(gtk_main_quit),NULL);

//button1をvboxの上半分に貼り付ける
gtk_box_pack_start(GTK_BOX(vbox), button1, TRUE, TRUE, 0);


//ボタンを作成
GtkWidget *button2;
button2 = gtk_button_new_with_label("quit");

//ボタンをクリックした時のコールバック関数を登録
g_signal_connect(G_OBJECT(button2), "clicked", G_CALLBACK(gtk_main_quit),NULL);

//button2をvboxの下半分に貼り付ける
gtk_box_pack_start(GTK_BOX(vbox), button2, TRUE , TRUE, 0);

//ウィンドを閉じたときにプログラムを終了するようにコールバックする。
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

//ウィンドウ上のウェジェットをすべて表示(gtk_widget_show_all)
gtk_widget_show_all(window);

gtk_main();

return 0;
}