gtk 트리에 관해 질문드립니다.
글쓴이: kirom / 작성시간: 수, 2005/12/21 - 6:58오후
어제 처음으로 gtk를 접해본 학생입니다.
제가 실력이 없어서인지 낯선 환경에 적응하기가 힘들군요.
GtkTreeModel을 사용해서 트리를 만든 후 윈도우에 붙여서 출력해보니
트리의 기본적인 형태와 데이터는 나옵니다만 parent와 child를 연결하는 선이 없네요.
책에서 있었던 트리 예제는 +,- 버튼으로 하위 폴더를 볼 수 있고 하위 트리와 의 관계를 선으로 표현하고 있는데 바뀐 버전의 트리에서도 이런식의 트리를 만들 수 있는지 궁금합니다.
엉터리 소스지만 지금까지 만든걸 올려보겠습니다.
--------------------------------------
#include<gtk/gtk.h> static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer data) { g_print("delete_event\n"); return FALSE; } static void destroy(GtkWidget *widget, gpointer data) { gtk_main_quit(); } enum { TITLE_COLUMN, AUTHOR_COLUMN, CHECKED_COLUMN, N_COLUMNS }; int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkTreeStore *store; GtkWidget *tree; GtkTreeIter iter1; GtkTreeIter iter2; GtkTreeIter iter3; GtkCellRenderer *renderer; GtkTreeViewColumn *column; gtk_init(&argc, &argv); store = gtk_tree_store_new(N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); gtk_tree_store_append(store, &iter1, NULL); gtk_tree_store_set(store, &iter1, TITLE_COLUMN, "The Art of coumputer", AUTHOR_COLUMN, "Donald E, k", CHECKED_COLUMN, FALSE, -1); gtk_tree_store_append(store, &iter2, &iter1); gtk_tree_store_set(store, &iter2, TITLE_COLUMN, "ch1", AUTHOR_COLUMN, "kirom", CHECKED_COLUMN, TRUE, -1); gtk_tree_store_append(store, &iter2, &iter1); gtk_tree_store_set(store, &iter2, TITLE_COLUMN, "ch2", -1); gtk_tree_store_append(store, &iter2, &iter1); gtk_tree_store_set(store, &iter2, TITLE_COLUMN, "ch3", -1); gtk_tree_store_append(store, &iter3, &iter2); gtk_tree_store_set(store, &iter3, TITLE_COLUMN, "ch10", AUTHOR_COLUMN, "erere", -1); gtk_tree_set_view_lines(GTK_TREE_MODEL(tree), TRUE); tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); g_object_unref (G_OBJECT (store)); renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (renderer), "foreground", "red", NULL); column = gtk_tree_view_column_new_with_attributes("Author", renderer, "text", AUTHOR_COLUMN, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Title", renderer, "text", TITLE_COLUMN, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("Checked out", renderer, "active",CHECKED_COLUMN, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "k i r o m"); gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE); gtk_window_set_default_size(GTK_WINDOW(window), -1, 400); gtk_container_set_border_width(GTK_CONTAINER(window), 100); g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(delete_event),NULL); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy),NULL); vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_box_pack_start(GTK_BOX(vbox), tree, FALSE, TRUE, 0); gtk_widget_show_all(window); gtk_main(); return 0; }-----------------------------------
답변 부탁 드립니다
Forums:
댓글 달기