在GTK C中填充模型后,在组合框中获取空间

时间:2013-09-18 22:26:22

标签: c gtk glade

我有代码,我按文字填充组合框模型,但第一次看到奇怪的行为。

我使用Blade GUI editir创建*.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,则空间会变小。

enter image description here

有人遇到同样的事情,知道如何解决它吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

你所看到的并不完全是一个“bug”,它只是Gtk组合框的方式,你将不得不忍受它。

如果你不相信我,请尝试另一个应用程序 -

  • 打开一个Gtk应用程序(我使用了The Gimp)
  • 查找包含多个选项的组合框
  • 拖动窗口以使组合框靠近屏幕底部
  • 点击它

当组合框出现时,顶部会有一个很大的空白区域,就像你的一样。

如果没有修补Gtk本身,我不相信有一个修复。有关此问题的更多讨论/咆哮,请参阅this Launchpad bugthis Gnome Buzilla bug