ツリー2010年2月11日 | |
![]() ファイル内容ツリーを作ります。基本はリストと同じです。gtk_list_store_new() の代りに gtk_tree_store_new() を使います。 GtkTreeView の作成。 tree = gtk_tree_view_new(); ツリーの作成。 store = gtk_tree_store_new( N_COLUMNS, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_BOOLEAN ); gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); 列の ID は次のように定義しています。
enum{
COLUMN_ITEM,
COLUMN_NUM,
COLUMN_VISIBLE,
N_COLUMNS,
};
ツリーの枝で "Num" 列を表示させないようにするために、COLUMN_VISIBLE をブーリアンとして定義しています。 列の追加。 renderer = gtk_cell_renderer_text_new(); g_object_set_data(G_OBJECT(renderer), "column", GINT_TO_POINTER(COLUMN_ITEM)); column = gtk_tree_view_column_new_with_attributes( "Item", renderer, "text", COLUMN_ITEM, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); renderer = gtk_cell_renderer_text_new(); g_object_set_data(G_OBJECT(renderer), "column", GINT_TO_POINTER(COLUMN_NUM)); column = gtk_tree_view_column_new_with_attributes( "Num", renderer, "text", COLUMN_NUM, "editable", TRUE, "visible", COLUMN_VISIBLE, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); 表示の切り替えを指定できるように、"Num" 列で "visible" に COLUMN_VISIBLE を指定しています。 項目の追加。 gtk_tree_store_append(store, &iter, NULL); gtk_tree_store_set(store, &iter, COLUMN_ITEM, "fruits", COLUMN_NUM, 0, COLUMN_VISIBLE, FALSE, -1); gtk_tree_store_append(store, &citer, &iter); gtk_tree_store_set(store, &citer, COLUMN_ITEM, "apple", COLUMN_NUM, 1, COLUMN_VISIBLE, TRUE, -1); gtk_tree_store_append(store, &citer, &iter); gtk_tree_store_set(store, &citer, COLUMN_ITEM, "lemon", COLUMN_NUM, 2, COLUMN_VISIBLE, TRUE, -1); gtk_tree_store_append(store, &iter, NULL); gtk_tree_store_set(store, &iter, COLUMN_ITEM, "animals", COLUMN_NUM, 0, COLUMN_VISIBLE, FALSE, -1); gtk_tree_store_append(store, &citer, &iter); gtk_tree_store_set(store, &citer, COLUMN_ITEM, "cat", COLUMN_NUM, 3, COLUMN_VISIBLE, TRUE, -1); gtk_tree_store_append(store, &citer, &iter); gtk_tree_store_set(store, &citer, COLUMN_ITEM, "penguin", COLUMN_NUM, 4, COLUMN_VISIBLE, TRUE, -1); gtk_tree_store_append() では、第 3 引数に親の GtkTreeIter を指定します。親がない場合は NULL を指定します。たとえば、"fruits" は親を持たないので、gtk_tree_store_append() で第 3 引数に NULL を指定しています。また、"fruits" は枝なので、gtk_tree_store_set() で COLUMN_VISIBLE に FALSE を指定して、"Num" の列を表示しないようにしています。 | |
| PENGUINITIS | |