如何复制或复制gtk小部件?

时间:2010-04-15 13:51:27

标签: c gtk

如何复制或复制gtk小部件? 在我的应用程序中,我有一个巨大的GtkComboBox创建了一个long for循环,耗费了大量的时间,我在一个屏幕中的两个地方使用这个组合。

所以,我想做的是创建这个组合一次,然后将它复制/复制到另一个组合中,这样可以节省我的时间。

如果我尝试两次添加相同的组合框指针,gtk给我错误“child-> paren!= NULL”因为gtk小部件只能有单个父级。

那该怎么办?

1 个答案:

答案 0 :(得分:4)

这就是为什么GTK +中显示数据的许多小部件都基于模型。该模型保存数据,而不是小部件。窗口小部件充当数据的“视图”,模型可以在多个窗口小部件之间共享。

您只需在两个组合框中使用相同的模型:

GtkListStore *model;
GtkWidget *c1, *c2;

/* Set up the model. */
model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INTEGER); /* Or whatever. */

/* Create first combo. */
c1 = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model));

/* Create second combo. */
c2 = gtk_combo_box_new_with_model(GTK_TREE_MODEL(model));