今回は、ウインドウに「ボタン」を置いてボタンをクリックしたらプログラムが終了するようにします。
ボタンを作るにはgtk_button_new_with_label()を使います。GTK+のボタンは、ボタンに直接表示する文字列を設定するのではなく上にラベルなどを置いて文字列を表示するコンテナになっているようなのですが、この関数を使うと指定した文字列のラベルを配置した状態でボタンを作れるので便利です。ボタンの操作はこの関数が返すボタンのポインタに対して行います。
btn=gtk_button_new_with_label(" C l o s e !! ");
ボタンを作ったら、ボタンクリック時のシグナル処理関数を定義しましょう。今回は単純にプログラムを終了させるだけなので
void btn_click(GtkWidget *wig,gpointer p) { gtk_main_quit(); }
という関数を定義し、この関数をボタンのシグナルに関連付けます。
gtk_signal_connect(GTK_OBJECT(btn),"clicked",GTK_SIGNAL_FUNC(btn_click),NULL);
次に、ボタンをウインドウ上に追加しましょう。上に他のウィジェット(GUI部品)を配置できるウィジェットは「コンテナ」と呼ばれ、ボタンやウインドウもコンテナになります。
gtk_container_add(GTK_CONTAINER(win),btn);
これでコンテナであるウインドウにボタンが配置されました。あとは、
gtk_widget_show(btn); gtk_widget_show(win);
としてボタンとウインドウを表示し、gtk_main()を呼び出してメインループに入ります。そして、ボタンがクリックされると、btn_clickが呼び出されそこでgtk_main_quit()を実行。その結果メインループを抜けプログラムが終了する、という感じですね。
プログラムは前回同様
gcc -o test test.c `gtk-config --cflags` `gtk-config --libs`
としてコンパイルしてください(ソースファイル名をtest.cとした場合)。実行後、ボタンをクリックすると終了します。なお、ウインドウはボタンの大きさにあわせられるのでかなり小さくなるかもしれません。プログラムを実行してもウインドウが見当たらない時は、他のウインドウを閉じるなどしてから良く探してみましょう(^^;。
戻る |