Seite 1 von 1

Label aktualisiert sich nicht

Verfasst: 4. Mai 2009 15:11
von Eddi
Hallo!

Ich bin mir sicher das Problem gabs schon, hab aber beim der schnellen Durchschau über die Threads im Forum nichts gefunden.

Also kurz zu meinem Problem. Ich habe ein normales Main-Widget mit nen paar Push-Buttons, nen paar Labeln und zwei Spinboxen. Im Prinzip muss man am Anfang in die Spinboxen ein paar Werte eingeben und dann läuft entsprechend das Programm ab, je nachdem welche Werte man da eingegeben hat. So sieht das Ganze in etwa aus:

{
runden = spinboxrunden->value(); //einlesen der Rundenanzahl
delay = spinboxdelay->value(); //einlesen der Delay-Zeit
delayer(); //rechnet float delay in int delay3 ms um
zufall1.resize(runden);
zufall(); //Zufallsfunktion, befüllt zufall1[] mit Zufallszahlen

labelstatus1->setText("Computer Aktion:");

while (rundenzahl<=runden)
{
for (int i=0; i < runden; i++)
{
zufall2=zufall1;
switchlabel();
timer();
};
};
if (rundenzahl>runden)
{
labelstatus2->setText("Simulation beendet");
};
};

Wichtig ist jetzt nur, dass in der for-Schleife eine Funktion "switchlabel()" aufgerufen wird, die je nach dem Wert von zufall2 einen anderen Text in labelstatus2 anzeigen soll. Da im Array zufall1[] Zufallszahlen von 1-5 stehen soll sich labelstatus2 praktisch in einem vorher eingegebenen zeitlichen Abstand ändern.

Tut es aber leider nicht. Das Programm läuft ab und erst am Ende (also praktisch wenn alle Zufallszahlen abgelaufen sind) erscheint dann in den Labels die jeweilige Textnachricht... Jetzt meine Frage, kann ich des irgendwie so hin deichseln, dass des so funktioniert wie ich mir des vorstelle?

Ich wär dankbar für Hilfe und sollt meine Beschreibung zu wirr sein, werd ich mich bemühen das ganze Problem vielleicht noch klarer zu erläutern :D .

Verfasst: 4. Mai 2009 15:20
von Christian81
Dein Label kann nur aktualisiert werden wenn Du Qt Zeit dazu gibst. Haben wir hier schon öfters gehabt -> Suche nach EventLoop bzw Berechnung in einem eigenen Thread auslagern.

Verfasst: 6. Mai 2009 12:56
von Eddi
Okay danke!