Je veux dupliquer un GtkWidget chargé par GtkBuilderen double GtkWidgetdans C
Mon problème est que dire Gtk pour emballer dans le même Vbox il est déjà fait une erreur, et je ne sais pas comment dupliquer . J'imagine que cela implique de jouer avec des pointeurs et des références, ce qui est probablement la raison pour laquelle je manque le point.
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);
}}}
Ceci remplit la boîte avec le widget 5 fois avec des séparateurs entre les deux. Le problème réside dans le fait que le programme ouvre et ferme 5 fois le même fichier juste pour le mettre en place.
Comment puis-je prendre la sortie du générateur et la "copier" dans 5 instances complètement différentes? Il implique probablement quelque chose avec beaucoup de *
s et &
s.
Il est déjà dans son propre fichier plus petit, mais dit fichier plus petit est plus de 11kb ... –
Eh bien, si vous le copier, il faudrait reconstruire tous les sous-widgets pour chaque instance du widget. À moins que vous ne remarquiez un gros succès, je ne m'inquiéterais pas de lire le fichier cinq fois. Ne perdez pas votre temps à optimiser quelque chose qui n'a pas besoin d'optimisation. – ptomato