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:


댓글 달기