Bonjour,
Je suis nouveau sur le site donc je vais essayer d'expliquer au mieux.
Alors mon problème est le suivant j'essaye de changer la forme (ajouter des lignes) d'un tableau déjà présent dans ma fenêtre principal mais rien n'y fait.
Sur les deux idées que j'ai eu aucune ne fonctionnent. La première l'affichage ne change pas et avec la seconde j'obtiens une erreur de segmentation.
J'ai simplifier mon code au maximum pour que ça soit plus clair.
1ere idée: J'ai créé mon tableau avec sur une ligne le bouton pour ajouter une ligne et sur une seconde ligne un label pour voir mon nbl
2eme idée: J'ai utilisé un box vertical dans laquelle je met d'abord mon bouton d'ajout de ligne puis mon label et enfin mon tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 #include <stdlib.h> #include <gtk/gtk.h> static GtkWidget *pWindow; int nbl=0; //va me permettre d'ajouter un ligne a chaque fois GtkWidget *texte; GtkWidget **texte2; GtkWidget *Table; void addline(void); int main(int argc, char **argv) { GtkWidget *pVBox; GtkWidget **pButton; GtkWidget *Button; gchar *temp; int i,j; gtk_init(&argc, &argv); pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "GtkDialog"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 600, 400); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); Table=gtk_table_new(nbl+2,1,FALSE); gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(Table)); Button = gtk_button_new_with_label("Ajouter une ligne"); gtk_table_attach(GTK_TABLE(Table), Button, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0); texte = gtk_label_new(NULL); gtk_table_attach(GTK_TABLE(Table), texte, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0); for (i=2; i<=nbl; i++) { texte2[i] = gtk_label_new("blabla"); gtk_table_attach(GTK_TABLE(Table), texte2[i], 0, 1, i, i+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0); } g_signal_connect(G_OBJECT(Button), "clicked", G_CALLBACK(addline), NULL); gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void addline (void) { // Me permet de mettre mon nbl a jour et le label me permet de voir si elle est bien mise a jour int i; nbl++; const gchar* text; text=g_strdup_printf("Nombre de ligne %d",nbl); gtk_label_set_text(GTK_LABEL(texte), text); }
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 #include <stdlib.h> #include <gtk/gtk.h> static GtkWidget *pWindow; int nbl=0; //va me permettre d'ajouter un ligne a chaque fois GtkWidget *texte; GtkWidget *Table; void addline(void); int main(int argc, char **argv) { GtkWidget *pVBox; GtkWidget *Button; gchar *temp; int i,j; gtk_init(&argc, &argv); pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "GtkDialog"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 600, 400); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); pVBox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(pWindow), pVBox); Button = gtk_button_new_with_label("Ajouter une ligne"); gtk_box_pack_start(GTK_BOX(pVBox), Button, FALSE, FALSE, 0); texte = gtk_label_new(NULL); gtk_box_pack_start(GTK_BOX(pVBox), texte, FALSE, FALSE, 0); Table=gtk_table_new(nbl,1,FALSE); gtk_container_add(GTK_CONTAINER(pVBox), GTK_WIDGET(Table)); g_signal_connect(G_OBJECT(Button), "clicked", G_CALLBACK(addline), NULL); gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void addline (void) { int i; GtkWidget **texte2; nbl++; const gchar* text; text=g_strdup_printf("Nombre de ligne %d",nbl); gtk_label_set_text(GTK_LABEL(texte), text); for (i=1; i<=nbl; i++) { texte2[i] = gtk_label_new("blabla"); gtk_table_attach(GTK_TABLE(Table), texte2[i], 0, 1, i, i+1, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0); } }
Partager