ComboBox с изображениями GTK - PullRequest
       4

ComboBox с изображениями GTK

4 голосов
/ 22 апреля 2011

как я могу добавить изображения в ComboBox? Я хочу иметь текст и правильное изображение?

Я пытался это реализовать, но хорошо, что это не сработало ^. ^

Нужны советы

1 Ответ

7 голосов
/ 22 апреля 2011

Для начала вам понадобится модель для хранения предметов (текста и изображений).

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...