最近のgtk-2系はいろいろ中身の設計から変更があり,ツリービューや,コンボボックスなどのコンポーネントは,
- モデル:M
- ビュー:V
- コントローラ:C
のMVCとして再設計されたみたい.
実際には以下の4つのコンポーネントから構成される.
- The tree view widget
- GtkTreeView
- The view column
- GtkTreeViewColumn
- The cell renderers
- GtkCellRender
- GtkCellRendererPixbuf
- GtkCellRendererText
- GtkCellRender
- The model interface
- GtkTreeModel
- GtkTreeStore
- GtkListStore
- GtkTreeModel
GtkListStore を使って ComboBox をつくる場合.
まずモデルは,文字列のリストとして作成する.
gtk的には,カラム数1の GtkListStore と定義するのが簡単みたい.
GtkListStore *list = gtk_list_store_new(1, G_TYPE_STRING); GtkTreeIter iter; // リストへのノードを追加 gtk_list_store_append(list, &iter); // ノードの各カラムの設定 // 可変引数で以下の情報を指定.終端は -1 // {index, index番目のカラムの値} gtk_list_store_set(list, &iter, 0, "AAAA", -1);
コントローラをつくる
GtkWidget *combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(list));
最後にビューをつくる.
GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer, "text", 0, NULL);
これで combo boxが完成.