我有通过文本填充组合框模型的代码,但我第一次看到奇怪的行为。
我使用 Blade GUI 编辑器创建*.ui
文件,在其中生成单个空组合框。
之后,我从方法中获取组合并修改/填充我的组合。
这是我的代码片段:
GtkWidget *combo_screen_share;
GtkTreeModel *model;
// here I get empty combobox
combo_screen_share=myprog_gtk_get_widget(call_view,"window_screen_stream");
GtkCellRenderer *renderer=gtk_cell_renderer_text_new();
model=GTK_TREE_MODEL((store=gtk_list_store_new(1,G_TYPE_STRING)));
int i;
for(i=0; i<200; i++){
gtk_list_store_append(store,&iter);
gtk_list_store_set(store,&iter,0,"Full Screen",-1);
}
gtk_combo_box_set_model(GTK_COMBO_BOX(combo_screen_share),model);
g_object_unref(G_OBJECT(model));
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo_screen_share),renderer,FALSE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_screen_share),renderer,"text",0,NULL);
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_screen_share),0);
// bind 'onChange' with other method as callback
g_signal_connect(G_OBJECT(combo_screen_share),"changed",(GCallback)gtk_combo_box_new_with_model,NULL);
它应该创建 200 行"Full Screen"
字符串。
但是,当我单击组合框时,我会得到空白的半屏作为间隙/空间,并且只有在我所有的 200 个项目之后。
如果我运行 100 次循环,空间会更小。
有人遇到过同样的事情并知道如何解决吗?
谢谢,