Как копировать или дублировать виджеты GTK? - PullRequest
4 голосов
/ 15 апреля 2010

Как скопировать или дублировать виджеты GTK? В моем приложении у меня есть один огромный GtkComboBox, созданный с одним циклом long for, который расходует так много времени, и я использую эту комбинацию в двух местах на одном экране.

Итак, я хочу создать это комбо один раз и скопировать / скопировать его в другой, чтобы сэкономить мое время.

Если я попытаюсь добавить один и тот же указатель поля со списком два раза, gtk выдаст мне ошибку «child-> paren! = NULL», поскольку в виджете gtk может быть только один родитель.

Так что же делать?

1 Ответ

4 голосов
/ 15 апреля 2010

Именно поэтому многие виджеты в 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...