Tree and List Widget Overview

Name

Tree and List Widget Overview -- Overview of GtkTreeModel, GtkTreeView, and friends

Overview

To create a tree or list in GTK+, you need to use the GtkTreeModel interface, in conjunction with the GtkTreeView.

Write real docs here

Simple Example

Here is a simple example of using a GtkTreeView widget in context of the other widgets. It simply creates a simple model and view, and puts them together. Note that the model is never populated with data — that is left as an exercise for the reader.
{
  GtkTreeStore *model;
  GtkWidget *view;
  GtkTreeViewColumn *column;
  GtkCellRenderer *cell_renderer;

  /* Create a model.  We are using the store model for now, though we
   * could use any other GtkTreeModel */
  model = gtk_tree_store_new_with_values (1, G_TYPE_STRING);

  /* Create a view */
  view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model));

  /* The view now holds a reference.  We can get rid of our own
   * reference */
  g_object_unref (G_OBJECT (model));

  /* Create a cell render and set an attribute */
  cell_renderer = gtk_cell_renderer_text_new ();
  g_object_set (G_OBJECT (cell_renderer),
	        "foreground", "red",
		NULL);

  /* Create a column, associating the "text" attribute of the
   * cell_renderer to the first column of the model */
  column = gtk_tree_view_column_new_with_attributes ("title",
						     cell_renderer,
						     "text", 0,
						     NULL);

  /* Add the column to the view. */
  gtk_tree_view_append_column (GTK_TREE_VIEW (view), column);
}