Я понимаю, что ГТК-2 теперь «античный». У меня есть старая программа, которую я должен изменить, и она слишком велика, чтобы преобразовать ее в GTK-3 за то время, которое у меня есть. Вот в чем проблема:
- Я добавил ComboBox, которому я назначаю ListBox с двумя столбцами (G_TYPE_INT и G_TYPE_STRING).
- По какой-то причине в поле со списком отображаются оба столбца, хотя я думаю, что код, показанный ниже, назначает только один.
void
fill_list(GtkComboBox *cbbox)
{
GtkListStore *store = gtk_list_store_new(2, G_TYPE_INT, G_TYPE_STRING);
GtkTreeIter iter;
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
gtk_combo_box_set_model(cbbox, GTK_TREE_MODEL(store));
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(cbbox), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(cbbox), renderer,
"text", 0, NULL);
gtk_combo_box_set_entry_text_column(cbbox, 0);
gtk_list_store_append(store, &iter);
// Col 0 Col 1
gtk_list_store_set(store, &iter, 0, 0, 1, "Kind 1", -1);
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, 1, 1, "Kind 2", -1);
gtk_list_store_append(store, &iter);
Это часть функции, вызываемой сигналом «реализовать» виджета. Замена ... text, 0... на ... text, 1... изменяет второй столбец ComboBox, как и ожидалось, на второй столбец ListStore.
Но по неизвестной причине я не могу избавиться от первого столбца. Я просмотрел весь проект на наличие признаков кода, которые могут повлиять - не повезло. Интерфейс был сгенерирован с помощью Glade-2.
В последние годы я больше работал с Python, поэтому подозреваю, что мне здесь чего-то не хватает. Я даже в основном тестировал этот код на Python, и у меня не было проблем.
Буду признателен за предложения!
