QTimer: SingleShot und isActive
Verfasst: 11. Dezember 2007 08:00
Hi,
ich habe einen QSlider, bei dessen Bewegung jedes Mal eine Funktion aufgerufen wird, deren Bearbeitung etwas länger dauert. Da mir dadurch ständig Werte verloren gehen, da einige "Slider-Bewegungen" kommen, während die Funktion noch rechnet, wollte ich einen QTimer einbauen. Jetzt habe ich es erst einmal so gemacht:
Nun geht er auch nach 1000ms in die changeTabSlot()-Funktion rein, aber er führt sie nicht nur einmal aus, sondern dann auch so häufig, wie ich den Slider bewegt habe. Könnt Ihr mir sagen, wo da mein Fehler ist???
MfG, Ozzy
P.S. habe gerade festegellt, dass der timer jedesmal eine neue ID bekommt. Steht ja auch in der Doku: "Setting the interval of an active timer changes its timerId()." Aber wie umgeht man das dann, das die Funktion häufiger aufgerufen wird?
ich habe einen QSlider, bei dessen Bewegung jedes Mal eine Funktion aufgerufen wird, deren Bearbeitung etwas länger dauert. Da mir dadurch ständig Werte verloren gehen, da einige "Slider-Bewegungen" kommen, während die Funktion noch rechnet, wollte ich einen QTimer einbauen. Jetzt habe ich es erst einmal so gemacht:
Code: Alles auswählen
if ( !( timer->isActive() ) ) timer->start(1000);
else {
timer->stop();
timer->start(1000);
}
connect(timer, SIGNAL(timeout()), this, SLOT( changeTabSlot() ));
MfG, Ozzy
P.S. habe gerade festegellt, dass der timer jedesmal eine neue ID bekommt. Steht ja auch in der Doku: "Setting the interval of an active timer changes its timerId()." Aber wie umgeht man das dann, das die Funktion häufiger aufgerufen wird?