Я хочу продублировать GtkWidget, загруженный через GtkBuilder
Моя проблема заключается в том, что указание Gtk упаковать его в тот же vbox, в котором он уже находится, вызывает ошибку, и я не знаю, как его дублировать.Я предполагаю, что это связано с манипуляциями с указателями и ссылками, поэтому, вероятно, я упускаю суть.
static GtkWidget *my_widget(){
GtkBuilder *builder;
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "widget.glade", NULL);
return GTK_WIDGET (gtk_builder_get_object (builder, "widget"));
}
int
main (int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *widget;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "userinterface.glade", NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "mainwindow"));
gtk_builder_connect_signals (builder, NULL);
// Load widget into box
int i;
for (i=0; i<5; i++){
gtk_box_pack_start( GTK_BOX (gtk_builder_get_object (builder, "widget_vbox")),
my_widget(),
FALSE,
TRUE,
0);
if(i!=4){ // Don't add a seperator at the last loop
widget = gtk_hseparator_new();
gtk_box_pack_start( GTK_BOX (gtk_builder_get_object (builder, "solo_mission_vbox")),
widget,
FALSE,
TRUE,
0);
gtk_widget_show(widget);
}}}
Это заполняет окно с виджетом 5 раз с разделителями между ними.Проблема заключается в том, что программа открывает и закрывает один и тот же файл 5 раз, чтобы положить его на место.
Как я могу взять выходные данные компоновщика и "скопировать" его в 5 совершенно разных экземпляров?Вероятно, это связано с чем-то большим *
с и &
с.