Seite 1 von 1
[solved] sleep Funktion
Verfasst: 31. Dezember 2006 00:13
von uhu01
Hy!
Habe ich etwas übersehen, oder gibt es wirklich nur die sleep Funktion im QThread? Hat Qt wirklich keine eigene Platformunabhängige sleep Funktion?
Es geht zwar um einen eigene Thread der mal kurz warten soll, allerdings muss dies in einer Funktion geschehen die nicht direkt vom Thread aus aufgerufen wird, ist 8. Funktion von einigen die sich gegenseitig aufrufen...
Muss ich wirklich einen Pointer auf den Thread mit übergeben, oder hab ich einfach was übersehen?
mfg
uhu01
Verfasst: 31. Dezember 2006 08:29
von upsala
Wenn du in deiner Hauptanwendung ein sleep ausführst wartet die ganze Anwendung, d.h. es werden auch keine Updates der GUI mehr ausgeführt. Nimm einen QTimer und ruf einen SLOT auf wenn die Wartezeit abgelaufen ist alles andere ist nicht mehr zeitgemäß.

n einem Thread ist das was anderes, denn dort kann die Hauptanwendung weiterlaufen...)
Verfasst: 31. Dezember 2006 13:43
von uhu01
Hy!
Ist mir schon klar das meine Oberfläche blockiert wenn ich in meinem Hauptthread ein sleep aufrufe....
Meine Frage ist nach einem Sleep, welches ich auch in einem Thread aufrufen möchte, allerdings in einer Unterfunktion...
Die Frage war ob ich einen Pointer auf meinen Thread bis in die Funktion übergeben muss in der ich das Sleep benötige (ist in einer anderen Klasse) oder ob es eine einfachere Lösung gibt.
mfg
uhu01
Verfasst: 31. Dezember 2006 13:59
von upsala
Achso...
Du könntest folgendes Probieren:
Code: Alles auswählen
class Wait : public QThread() {
public:
Wait(int time) : QThread() {
sleep(time);
}
}
Wait w(3);
Keine Ahnung obs funktioniert...
Verfasst: 31. Dezember 2006 15:26
von uhu01
Hy!
War eine tolle Idee, funktioniert super!
Hab folgendes verwendet:
Code: Alles auswählen
class Wait : public QThread {
protected:
Wait(int time) : QThread() {}
void run() {}
public:
static void sleep( int time)
{
QThread::sleep( time);
}
static void msleep( int time)
{
QThread::msleep( time);
}
static void usleep( int time)
{
QThread::usleep( time);
}
};
Danke für die Hilfe...das ist auf jeden Fall einen Eintrag in der Tipps und Tricks Sektion wert...
mfg
uhu01