[GTK+] Step 8. 콤보박스 제어
gtk+로 콤보박스(combo box)를 생성해서
문자열 리스트를 등록한 다음 이벤트 핸들러에
등록하여 변경된 콤보박스 문자열을 터미널에
출력하는 예제 프로그램입니다.
개발환경
Gentoo Linux 2.6.29-r5
gcc 4.3.3
문자열 리스트를 등록한 다음 이벤트 핸들러에
등록하여 변경된 콤보박스 문자열을 터미널에
출력하는 예제 프로그램입니다.
개발환경
Gentoo Linux 2.6.29-r5
gcc 4.3.3
#include<config.h>
#include<gtk/gtk.h>
#include<stdio.h>
int destroy_func(GtkWidget *widget, gpointer gdata)
{
g_print("quit....\n");
//gtk 프로그램 종료
gtk_main_quit();
return FALSE;
}
void combo_is_changed(GtkWidget *widget, gpointer gdata)
{
gchar *str = NULL;
str = gtk_entry_get_text(GTK_ENTRY(widget));
g_print("combo changed to %s\n", str);
}
int main(int argc, char **argv)
{
GtkWidget *w;
GtkWidget *combo;
GList * items;
gtk_init(&argc, &argv);
//window 생성
w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//종료시 callback function 등록
gtk_signal_connect(GTK_OBJECT(w), "delete_event",
GTK_SIGNAL_FUNC(destroy_func), NULL);
//combo box에 넣은 item 리스트를 생성
items = g_list_alloc();
items = g_list_append(items, "first");
items = g_list_append(items, "second");
items = g_list_append(items, "third");
items = g_list_append(items, "fourth");
//combo box 생성
combo = gtk_combo_new();
//item 리스트를 combo box에 추가
gtk_combo_set_popdown_strings(GTK_COMBO(combo), items);
//combo box가 변경되었을 경우 호출되어질 이벤트 핸들러 등록
gtk_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "changed",
GTK_SIGNAL_FUNC(combo_is_changed), NULL);
//combo box의 item을 수정할 수 없도록 설정
gtk_entry_set_editable(GTK_COMBO(combo)->entry, FALSE);
gtk_widget_show(combo);
//combo box를 담을 container설정
gtk_container_border_width(GTK_CONTAINER(w), 15);
//combo box 추가
gtk_container_add(GTK_CONTAINER(w), combo);
//window 사이즈 설정
gtk_window_set_default_size(w, 200, 100);
gtk_widget_show(w);
//gtk 메인 루프
gtk_main();
return 0;
}Posted by ExSuperstar
Track this back : http://exsuperstar.net/trackback.php?blogid=352
Commented by
나그네
at 2009/07/25/ 05:39
이 프로그램 세그먼테이션 폴트 납니다.
Commented by
ExSuperstar
at 2009/07/25/ 06:08
나그네// 지적해 주셔서 감사합니다. g_list_alloc()하는게 빠졌었네요 수정했습니다.
블로그에 올리면서 제가 실수했나 보네요 ㅋ 이해해 주세요
블로그에 올리면서 제가 실수했나 보네요 ㅋ 이해해 주세요





