【发布时间】:2021-01-27 12:27:55
【问题描述】:
我意识到 GTK-2 现在是“古董”。我有一个必须修改的旧程序,它太大了,暂时无法转换为 GTK-3。这是问题:
- 我添加了一个 ComboBox,我为其分配了一个具有 2 列(G_TYPE_INT 和 G_TYPE_STRING)的 ListBox。
- 出于某种原因,两列都显示在 ComboBox 上,但我认为下面显示的代码只分配了一个。
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 中测试了这段代码,并且没有任何问题。
非常感谢您的建议!
【问题讨论】: