GTKを使ったプログラミングのリメイク版です。以前のGTKは内容が古いので、新しくしました。
簡単のためにgladeを使ったプログラミングとなっています。
Gladeを起動すると、こんな画面になります。
まず、プロジェクトのオプションを設定します。
プロジェクト・ファイルの形式をGtkBuilderにします。
使用するツールキットの最低バージョンを上げると、使えるオブジェクトが増えます。
設定が終了すると、オブジェクトを配置して画面を作ります。左のツールアイコンを選んでオブジェクトを配置します。はじめは赤で囲んだウインドウを配置します。
下は、ウインドウにボタンだけを配置した図です。
配置し終わったら、プロパティ設定をします。
window1を選択し、ウインドウのプロパティを設定します。プロパティ項目は色々あるので、ここではシグナル設定のみをします。ウインドウが閉じたときに、gtkプログラムを終了するコマンド、gtk_main_quit()が実行されるように設定します。
ボタンが押されたときのシグナル設定もしておきます。ボタンクリックで、on_button1_clicked()が実行されるようにします。この関数は標準関数ではないので、後で自分で作る必要があります。
ここまでできたら、test_proglam.gladeと名前をつけて、保存します。
#include <gtk/gtk.h> /* * コールバック関数。 * GtkBuilderから呼び出す場合、G_MODULE_EXPORTが必要。 */ G_MODULE_EXPORT void on_button1_clicked(GtkButton *button, gpointer user_data){ /* 終了する。 */ gtk_main_quit(); } int main(int argc, char* argv[]){ GtkBuilder* builder; /* GtkBuilderオブジェクト。gladeファイルの設定 = GtkBuilderオブジェクトと考えてOK */ GtkWidget* window; /* GtkWidgetオブジェクト */ /* GTKを開始する */ gtk_init(&argc, &argv); /* GtkBuilderオブジェクトの取得 */ builder = gtk_builder_new(); /* gladeファイルの読み込み */ gtk_builder_add_from_file(builder, "test_program.glade", NULL); /* * GtkBuilderオブジェクトからGtkWidgetを取得する。 * GtkWidgetはGTKの様々なオブジェクトとして使われる。 * 今回、ウインドウやウインドウの上にあるオブジェクトを表示するため、 * ウインドウのGtkWidgetを取得する必要がある。 * なお、gtk_builder_get_object()で取得できるのはGObjectであるため、 * GtkWidgetにキャストしている。 */ window = (GtkWidget*)gtk_builder_get_object(builder, "window1"); /* ウインドウとその上にあるオブジェクトを表示する。 */ gtk_widget_show_all(window); /* * シグナル設定した関数を有効にする。 * gladeで設定したシグナルは、 * 1. ウインドウを閉じたときにgtk_main_quit()を実行する。 * 2. ボタンをクリックした時にon_button1_clicked()を実行する。 * である。 * gtk_main_quit()はもともとある関数だが、 * on_button1_clicked()は自分で新たに作成しなければならない。 */ gtk_builder_connect_signals(builder, NULL); /* GTKのイベントループ */ gtk_main(); return 0; }
program.c という名前にして、コンパイルします。
gcc -o program program.c `pkg-config --cflags --libs gtk+-2.0 gmodule-2.0`
pkg-configは指定されたパッケージのincludeファイルのディレクトリ指定やリンクを行ってくれます。
「program」とtest_program.gladeは同じディレクトリに置き、実行します。
実行すると、ボタン1つだけのウインドウが表示されます。ボタンを押したり、ウインドウを閉じたりすると、プログラムが終了します。