2011-04-22 39 views
4

如何添加圖像到組合框?我想有文字和正確的形象?組合框與圖像GTK

我試圖實現,但也沒有奏效^。^

任何建議需要

+0

的可能重複[如何創建GTK中的圖像組合框?](http://stackoverflow.com/questions/3441561/how-to-create-combobox-with-images-in-gtk) – ergosys 2012-01-19 22:05:13

+0

對於Python和GObject內省,請參見[此問題](http://stackoverflow.com/q/15807611/247696) – Flimm 2013-04-04 09:37:40

回答

6

首先你需要一個模型來存儲項目(文本和圖像)。

enum {COL_TEXT, COL_ICON, NUM_COLS}; 

GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, GDK_TYPE_PIXBUF); 

/* add some data */ 
GtkTreeIter iter; 
gtk_list_store_append(store, &iter); 
gtk_list_store_set(store, &iter, COL_TEXT, some_text, COL_ICON, some_pixbuf, -1); 

接下來創建GtkComboBox(或GtkComboBoxEntry,您可以跳過創建文本的單元格渲染)。

// GtkComboBoxEntry *combo = gtk_combo_box_entry_new_with_model(GTK_TREE_MODEL(store), COL_TEXT); 
GtkComboBox *combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); 

GtkCellRenderer *renderer; 

/* text cell */ 
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", COL_TEXT, NULL); 

/* icon cell */ 
renderer = gtk_cell_renderer_pixbuf_new(); 
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, FALSE); 
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), renderer, "pixbuf", COL_ICON, NULL);