in mehrere Gtk::Entry einschreiben



  • Hallo
    Ich möchte den Inhalt einem Datei in mehrere Entry (entry1, entry2 ...bis entry10) einschreiben..
    wie Kann ich mit einer Schleife auf mehrere GTK:Entry zugreifen bzw einschreiben , für hilfe wäre ich sehr dankbar.
    
    on_button_click schreibt schon in dem erste Feld (entry1) wie kann ich nun auf die 9 andere automatisch einschreiben ohne die wieder zu deklarieren.
    Bitte um Hilfe :( 
    
    #include <gtkmm.h>
    #include <iostream>
    
    using namespace std;
    using namespace Gtk;
    
    class sudoku : public Window
    {
    
        public:
                doku();
                Gtk::Dialog *pdialog;
                Gtk::Button *pbutton1 ;
                Gtk::Entry *pentry1; // Das erste Feld
                void on_button_click();
    };
    doku::doku()
    {
        rbuilder = Gtk::Builder::create_from_file("doku.glade");
        rbuilder->get_widget("dialog1", pdialog);
        rbuilder->get_widget("entry1", pentry1);
        rbuilder->get_widget("button1", pbutton1);
    
        if(pbutton1)
        {
          pbutton1->signal_clicked().connect(sigc::mem_fun(*this,    &sudoku::on_button_click));
        }
        Main::run(*pdialog);
    
    }
    void doku::on_button_click()
    {
       // Datei wird hier geöffnet
        ifstream datei;
        fichier.open("datei.txt",ios_base::in);
        if(datei)
        {
            char c;
            string inhalt[10];
            int i = 0;
            while(!datei.eof())
            {
                sudo.get(c);
                    inhalt[i++] = c ;
                cout << c <<endl;
            }
    
            for(int a=0;a<10;a++)//Hier möchte ich auf alle 10 Felde zugreifen
                                              //entry1, entry2, .......,entry20
                pentry1->set_text(inhalt[a]);          
        }
        else cout << "Fehler beim Öffnen "<<endl;
        datei.close();
    
    }
    


  • Ich bin nicht hundert Prozent sicher ob ich Deine Frage richtig verstanden habe aber ich vermute mal Du kommst nicht drumrum alle zehn Textfelder zu erstellen und dann reinzuschreiben.

    rbuilder->get_widget("entry1", pentry1);
    rbuilder->get_widget("entry2", pentry2);
    rbuilder->get_widget("entry3", pentry3);
    ....
    

    Das kann man natuerlich huebscher in eine Schleife packen aber ich denke das weisst Du selbst.
    Und ist es das was Du machen willst (ok das ist kein richtiger Code nur so zum verstaendnis)

    for(int a=0;a<10;a++){
    
                pentrya->set_text(inhalt[a]); 
    
    }
    

    oder das was mir aber irgendwie komisch vorkommt

    for(int a=0;a<10;a++){
    
                pentry1->set_text(inhalt[a]); 
                pentry2->set_text(inhalt[a]); 
                pentry3->set_text(inhalt[a]); 
                ....
    }
    

Log in to reply