dynamisch variabelnamen erzeugen



  • Hallo,

    also ich habe in QT 30 checkbutton und die will ich nun abfragen.

    for(int i=0;i<=30;i++)
    {
    ui->checkBox_$i->tristate
    }

    also da wo das dollar steht mit dem i soll nun die laufvariable rein. Nicht wundern ich komme aus dem TCL bereich. kann mir da einer n tipp geben wie ich das so dynamisch umsetzen kann?



  • Für sowas legt man ein Array an. Darauf kann man dann mit array[i] zugreifen. Wenn du jetzt 30 Checkbuttons so angelegt hast, cb_1, cb_2, cb_3, dann sieht das net so toll für dich aus... Du könntest in dem Fall ein Array anlegen und dort die Zeiger auf die Elemente speichern.

    array[0] = &cb_1;
    array[1] = &cb_2;
    // ...
    array[29] = &cb_30;
    

    Aber na ja, alles net so toll. Sinniger wäre es, wenn du die Checkbuttons dynamisch anlegst. Dann wäre das alles kein Problem.



  • greenghecco schrieb:

    Hallo,

    also ich habe in QT 30 checkbutton und die will ich nun abfragen.

    for(int i=0;i<=30;i++)
    {
    ui->checkBox_$i->tristate
    }

    also da wo das dollar steht mit dem i soll nun die laufvariable rein. Nicht wundern ich komme aus dem TCL bereich. kann mir da einer n tipp geben wie ich das so dynamisch umsetzen kann?

    std::vector oder mit nem Key assoziiert std::map.



  • Du kannst z.Bsp. ein Feld erstellen, wo du die Pointer darauf speicherst (das geht wohl aber nur mit dem präprozessor ohne ständig box_y zu schreiben), aber nachdem du einmal alle dort drin gespeichert hast, kannst du dann dort auf alle mittels schleife zugreifen.

    bsp.:

    #include <vector>
    
    /*...*/
    
    std::vector<DEIN_CHECK_BOX_TYP*> boxen;
    boxen.push_back(ERSTER_CHECKBOX_POINTER);
    /*...*/
    
    for(std::vector<DEIN_CHECK_BOX_TYP*>::const_iterator i(boxen.begin()), e(boxen.end()); i != e; ++i)
      (*i)->tristate;
    

    es empfiehlt sich hier nen typedef für den container anzulegen.

    bb



  • hi habs erstmal anders gelöst.

    ne schleife und da dann ein
    qbitarray definiert was genullt wird (ist aber schon standard).

    dann das signal von checkbox benutzen was auf änderungen reagiert.

    dann kann man mit togglefunktion die bits immer drehen. Weiss jemand vielleicht wie ich

    qbitarray zu qbytearray casten kann.?

    gruß und dankö



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply