- Glade を起動して Top level に Main window, Container に 3 段の virtual box (垂直ボックス), その中に Text entry, label, button を配置する
- Main window の名前を Hello World にする。Entry, Label, Button はデフォルトのまま entry1, label1, button1 としておく
- button1 のシグナル clicked にハンドラ button1_clicked_cb を登録する
- 作成した glade ファイルを保存する (hello_world.glade)
- hello_world.c を作成する。main 内で hello_world.glade を読み出して各 widget を紐付ける
Example: hello_world.c#include <gtk/gtk.h> GtkBuilder *builder; GtkWidget *label1; GtkWidget *entry1; G_MODULE_EXPORT void button1_clicked_cb(GtkWidget *widget, gpointer data) { const gchar *text; char buf[256]; g_print("%s is called\n", __FUNCTION__); text = gtk_entry_get_text(GTK_ENTRY(entry1)); sprintf(buf, "%s", text); gtk_label_set_text(GTK_LABEL(label1), buf); } int main(int argc, char **argv) { GtkWidget *window; GError *error = NULL; GtkSettings *settings; gtk_init(&argc, &argv); /* Create a new GtkBuilder object */ builder = gtk_builder_new(); if (!gtk_builder_add_from_file(builder, "hello_world.glade", &error)) { g_warning("%s", error->message); g_free(error); return 1; } settings = gtk_settings_get_default(); // gtk_settings_set_string_property (settings, "gtk-font-name", "MS Mincho 14", ""); gtk_settings_set_string_property (settings, "gtk-font-name", "Sazanami Gothic 14", ""); window = GTK_WIDGET(gtk_builder_get_object(builder, "Hello World")); label1 = GTK_WIDGET(gtk_builder_get_object(builder, "label1")); entry1 = GTK_WIDGET(gtk_builder_get_object(builder, "entry1")); gtk_builder_connect_signals(builder, NULL); g_object_unref(G_OBJECT(builder)); gtk_widget_show(window); gtk_main(); return 0; }
- コンパイル
Makefile の CFLAGS に CFLAGS に gmodule-2.0 を付ける。LDFLAGS に -mwindows を付けると DOS 窓を開くことなくプログラムが実行できるようになる
Example: MakefileCC=gcc PKG_CONFIG = c:/usr/MinGW/bin/pkg-config CFLAGS = -Wall -DGTK_DISABLE_DEPRECATED `$(PKG_CONFIG) --cflags gtk+-2.0 gmodule-2.0` LDFLAGS = `$(PKG_CONFIG) --libs gtk+-2.0` -mwindows TARGET = \ hello_world.exe .SUFFIXES: .exe .c .o # $@ は生成しようとしているターゲット名 # $< は依存しているファイル .c.o: $(CC) $(CFLAGS) -c -o $@ $< .o.exe: $(CC) -o $@ $< $(LDFLAGS) default: $(TARGET) pkgconfig: $(PKG_CONFIG) --cflags gtk+-2.0 $(PKG_CONFIG) --libs gtk+-2.0 clean: rm -rf *.o *.exe
- 実行結果
2013年2月27日水曜日
[GTK+]Glade で Hello World 作成
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿