2016-04-22 14 views
0

Ich muss Array von Schaltflächen in C erstellen. Ich bin mir nicht sicher, was ich vermisse, bitte hilf mir. Hier ist meine Array:Erstellen von Array von Schaltflächen gtk in c

GtkWidget *button[5]; 
int i; 
for (i =1; i<5; i++) 
     button[i] = gtk_button_new(); 

Dann habe ich den Rest der Tasten ... und ich bin mit button [i] und dann am Ende ich dieses i++; tun dies wahrscheinlich nicht der beste Weg, aber ich bin nur nicht sicher, wenn Ich erstelle das Array, wie gebe ich Button 1, Button 2 und etc im Rest meiner Aussagen weiter? Bitte jede Hilfe geschätzt. p.s. Ich bin neu in C, nicht auf mir hart, ty :)

/* Creates a new button with the label "Button 1". */ 
button[i] = gtk_button_new_with_label ("Button 1"); 

/* Now when the button is clicked, we call the "callback" function 
* with a pointer to "button 1" as its argiument */ 
g_signal_connect (button[i], "clicked", 
        G_CALLBACK (callback), "Run button 1"); 

/* Instead of gtk_container_add, we pack this button into the invisible 
* box, which has been packed into the window. */ 
gtk_box_pack_start (GTK_BOX (box1), button[i], TRUE, TRUE, 0); 

/* Always remember this step, this tells GTK that our preparation for 
* this button is complete, and it can now be displayed. */ 
gtk_widget_show (button[i]); 
i++; 
+2

Array-Index-Wert beginnt mit 0. zB 'für (i = 0; i <5; i ++)' – adatapost

+0

Ich brauche 5 Tasten ... –

+0

Nun, denke nur, wenn i <5 ist wahr oder falsch, wenn i = 5 und Sie werden sehen, warum AVD richtig ist. – liberforce

Antwort

0

Ihr für startet Schleife mit einer Indexvariable (i) von 1 jedoch in den Speicher des Computers, den Index zu der Anordnung von Tasten, die Sie erklärt mit

GtkWidget * -Taste [5];

beginnt mit einem Index von 0 (i = 0) so zum Beispiel der Code sollte in etwa so aussehen: sie

GtkWidget *button[5]; 
//not necessary since c99 can declare inside for() e.g for(int i = 0; i < 5; i++) 
int i; 
for(i = 0; i < 5; i++) 
{ 
    button[i] = gtk_button_new(); 
} 
//do other stuff 

dann die Tasten benutzen Sie einfach zugreifen möchten Ihnen eine regelmäßige Anordnung zB:

button[0] = gtk_button_new_with_label("button 1"); 

du nicht das ich brauche ++ innerhalb der for-Schleife, da die für die Schleife automatisch den Iterator (i Variable) nach jeder Schleife erhöht (das ist, was die i ++ am Ende der for (i = 0; i < 5; i ++) does)

+0

Ich habe mich vertippt, ich meinte 0. Aber wenn du sagst, dass ich andere Sachen machen soll, sollten nicht auch andere Sachen in der Schleife sein? –

+0

Mit "mach andere Sachen" bedeutet eipi nur, was immer du mit den Tasten machen musst. Um die Schaltflächen zu verwenden, verwenden Sie einfach das gewünschte Array-Element wie bei einer normalen Skalar-Schaltfläche. – oldtechaa

+0

Whoops ich denke, ich hätte mehr Klarheit in diesem letzten Bit dank Oldtechaa – eipi