gtk: Combobox-Array



  • Hallo,

    Ich habe hier eine Combobox. Von dieser Combobox bräuchte ich jetzt ein Array[5][10].

    Wenn ich auf einen Button drücke soll er eine zeile auslesen können.

    Wie könnte ich aus diesem Code ein Array machen?

    GtkWidget *window;
      GtkWidget *hauptbox;
      GtkWidget *colorbox;
      GtkWidget *farbenauswahl;
    
      GList *glist = NULL;
    
    colorbox= gtk_hbox_new (TRUE, 0);
      gtk_box_pack_start (GTK_BOX (hauptbox), colorbox, TRUE, TRUE, 0);
    
      farbenauswahl = gtk_combo_new();
    
      glist = g_list_append (glist, "rot");
      glist = g_list_append (glist, "gruen");
      glist = g_list_append (glist, "blau");
      glist = g_list_append (glist, "braun");
      glist = g_list_append (glist, "gelb");
      glist = g_list_append (glist, "orange");
      glist = g_list_append (glist, "grau");
    
      gtk_combo_set_popdown_strings (GTK_COMBO (farbenauswahl), glist);
      gtk_box_pack_start_defaults (GTK_BOX (colorbox),farbenauswahl);
    

    MfG



  • Kannst du dein Problem bzw. dein Ziel konkreter beschreiben? Ich versteh nur Bahnhof



  • Ich würde gerne ein 2D Array mit Comboboxen aufbauen mit 10 Zeilen und 5 Spalten.

    Das Ziel ist, wenn ich einen Button drücke soll es die Werte einer Zeile auslesen.

    Mein Problem ist jetzt ich habe nur ein einzeiliges Array. Ich brauche aber mehrere Zeilen.

    Was mich noch stört ist dass in der ersten Combobox der "glist" Inhalt 1 mal vorkommt in der zweiten Combobox kommt der Inhalt 2 mal vor usw.

    Wie könnte ich es ändern dass in jeder Combobox der "glist" Inhalt nur 1 mal vorkommt.

    Kann man irgendwie die Größe der Combobox einstellen. Die Comboboxen haben einen Standardwert aber die sind mir zu groß.

    GtkWidget *window;
      GtkWidget *vbox;
      GtkWidget *hauptbox;
      GtkWidget *colorbox;
      GtkWidget *farbenauswahl[5][5];
    
      vbox=  gtk_vbox_new (TRUE, 20);
      gtk_container_add (GTK_CONTAINER (window), vbox);
    
      hauptbox= gtk_hbox_new (FALSE, 0);
      gtk_box_pack_start (GTK_BOX (vbox), hauptbox, TRUE, TRUE, 0);
    
      colorbox= gtk_hbox_new (TRUE, 0);
      gtk_box_pack_start (GTK_BOX (hauptbox), colorbox, TRUE, TRUE, 0);
    
      for (i=0; i<=1; i++)
      {
        for (j=0;j<=2;j++)
        {
          farbenauswahl[i][j]= gtk_combo_new();
    
          glist = g_list_append (glist, "rot");
          glist = g_list_append (glist, "gruen");
          glist = g_list_append (glist, "blau");
          glist = g_list_append (glist, "braun");
          glist = g_list_append (glist, "gelb");
          glist = g_list_append (glist, "orange");
          glist = g_list_append (glist, "grau");
    
          gtk_combo_set_popdown_strings (GTK_COMBO (farbenauswahl[i][j]), glist);
          //gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (farbenauswahl[i][j]), 5);
          gtk_box_pack_start (GTK_BOX (colorbox),farbenauswahl[i][j], TRUE, TRUE, 10);
        }
      }
    

    Das ist der Code wo das Problem vorkommt. Den Rest habe ich weggelassen damit es übersichtlicher ist. Falls es besser ist den ganzen Code hineinzufügen dann bitte melden.

    p.s. Hoffentlich ist es jetzt verständlicher

    MfG



  • Habe es geschafft die Boxen richtig anzuordnen.

    Mein Problem ist nur noch dass sich in den Boxen der glist-Inhalt vermehrt und die größe der Boxen.

    vbox=  gtk_vbox_new (TRUE, 20);
      gtk_container_add (GTK_CONTAINER (window), vbox);
    
      hauptbox= gtk_hbox_new (FALSE, 0);
      gtk_box_pack_start (GTK_BOX (vbox), hauptbox, TRUE, TRUE, 0);
    
      colorbox= gtk_vbox_new (TRUE, 0);
      gtk_box_pack_start (GTK_BOX (hauptbox), colorbox, TRUE, TRUE, 0);
    
    for(a=0; a<=9; a++)
    {
      zeilenbox[a]= gtk_hbox_new (TRUE, 0);
      gtk_box_pack_end (GTK_BOX (colorbox), zeilenbox[a], TRUE, TRUE, 0);
    }
    
      for (i=0; i<=9; i++)
      {
    
        for (j=0;j<=4;j++)
        {
          farbenauswahl[i][j]= gtk_combo_new();
    
          glist = g_list_append (glist, "rot");
          glist = g_list_append (glist, "gruen");
          glist = g_list_append (glist, "blau");
          glist = g_list_append (glist, "braun");
          glist = g_list_append (glist, "gelb");
          glist = g_list_append (glist, "orange");
          glist = g_list_append (glist, "grau");
    
          gtk_combo_set_popdown_strings (GTK_COMBO (farbenauswahl[i][j]), glist);
          //gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (farbenauswahl[i][j]), 5);
          gtk_box_pack_start (GTK_BOX (zeilenbox[i]),farbenauswahl[i][j], TRUE, TRUE, 5);
        }
      }
    


  • Hallo

    wenn ich eine Combobox habe, gibt es da einen Befehl wo ich den Inhalt auf einen bestimmten Wert setzen kann.

    z.b.

    farbenauswahl[i][j]= gtk_combo_new();
    
          glist = g_list_append (glist, "rot");
          glist = g_list_append (glist, "gruen");
          glist = g_list_append (glist, "blau");
          glist = g_list_append (glist, "braun");
          glist = g_list_append (glist, "gelb");
          glist = g_list_append (glist, "orange");
          glist = g_list_append (glist, "grau");
    
          gtk_combo_set_popdown_strings (GTK_COMBO (farbenauswahl[i][j]), glist);
          //gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (farbenauswahl[i][j]), 5);
          gtk_box_pack_start (GTK_BOX (zeilenbox[i]),farbenauswahl[i][j], TRUE, TRUE, 5);
    

    Kann ich jetzt mit einem Funktion bestimmen dass es gelb in der Combobox anzeigt?

    MfG



  • combray schrieb:

    Hallo

    wenn ich eine Combobox habe, gibt es da einen Befehl wo ich den Inhalt auf einen bestimmten Wert setzen kann.

    Jap... der steht aber in der Dokumentation...

    Kann ich jetzt mit einem Funktion bestimmen dass es gelb in der Combobox anzeigt?

    Das macht man mit einem Cellrenderer, auch hier sollte es etwas in der Doku geben.



  • Hallo,

    in einem Buch ist die Combobox so dargestellt.

    box[i][j]= gtk_combo_new();
    
          glist = g_list_append (glist, "rot");
          glist = g_list_append (glist, "gruen");
          glist = g_list_append (glist, "blau");
    
          gtk_combo_set_popdown_strings (GTK_COMBO (box[i][j]), glist);
    

    Diese Variante ist aber angeblich schon veraltet. Kann mir jemand ein kurzes Bsp. schicken wie es aussehen sollte.

    MfG


Anmelden zum Antworten