in meinem Program möchte ich auf Knopfdruck eine Methode aufrufen, die zunächst ein widget mit bestimmten inhalten erstellt. Allerdings werden dazu berechnungen auf der grafikkarte durchgeführt.
Danach (nach einer kurzen Wartezeit) sollen werden die Daten im Widget dargestellt und sollen jetzt in ein QImage gespeichert werden (und auf die festplatte gespeichert).
Dann soll ich die funktion selbst wieder aufrufen und dass gleich weider mit neuen daten machen. Dh es werden wieder neue berechnungen auf der Graka durchgeführt und das Ergebnis dann in einem widget dargestellt und dann das widget als QImage gespeichert.
Der Relevante Code dazu sieht derzeit wie folgt aus:
Übrigens wird die funktion per knopfdruck mit "setTF(0)" aufgerufen.
Code: Alles auswählen
void MyWidgetClass::setTf(unsigned int index)
{
QGradient gradient = myVector_[index]->getGradient();
tfEditor_->setGradient(gradient);
QTimer::singleShot(15000, this, SLOT(createThumbnail()));
if(index+1 < myVector_.size())
{
QTimer::singleShot(16000, this, SLOT(setTf(index+1)));
}
}
Wenn ich setTF(index+1) direkt, also ohne QTimer aufrufe lauft er in der rekursion weiter - nur bring mir das nichts, weil dann ja noch nicht die daten von der Graka fertig berechnet sind.
Gibts Ideen woran das liegen könnte, dass die Rekursion mit dem timer nicht funktioniert?
Bzw. gibts vielleicht noch andere möglichkeiten den Hauptprogramfluß anzuhalten während auf der Graka gearbeitet wird.
lg scr[/code]