2 Prozesse in Qt und Sleep
-
Hallo,
ich möchte in Qt einen Button blinken lassen.
Meine Idee wahr:loop:; // Einstiegspunkt ui->button->hide(); // Button verstecken sleep(1) // Eine Sekunde warten ui->button->show(); // Button zeigen goto loop; // Wieder von vorne
Nur soll währenddessen das Programm weiter machen, wie macht man einen zweiten Prozess auf? Außerdem wie lege ich das Programm eigentlich schlafen (?) hab mich erkundigt und in Qt gibts wohl nicht wirklich eine Sleep Funktion, alternative?
Bye Bye
PS: Wo ich grade ne Frage stehe, wenn ich das Programm starte, und es dann wieder zu mache kommt die Meldung das Programm abgestürzt ist und halt ob ich den Bericht an Apple senden will... Ist das normal mit den Abstürzen?
-
Warum
goto
wenn es eine einfache Schleife auch tut?Ich nehme an du suchst Threads. C++11 kennt Threads und im Qt Framework gibt es dafür
QThread
.
-
Ka warum goto, habe früher auch immer benutzt
Ja ich meine Threads, dann guck ich mal in Qt Documentation
-
MOUZ schrieb:
Ka warum goto, habe früher auch immer benutzt
Dann solltest du dir das abgewöhnen
goto
ist nur in ganz seltenen Fällen sinnvoll.
-
Hab ich von gehört
Wie soll ich dann eine unendliche Schleife machen?
(Mehr oder weniger) doofe Idee:int i = 5 while(i <= 1) { i++; // Code i--; }
-
Für eine Endlosschleife gibt es mehrere Möglichkeiten:
while (true) { // Code } // sieht man oft in C, in C++ ist IMO while(true) besser while ( 1 ) { // Code } for ( ;; ) { // Code }
Was man nimmt ist im Endeffekt Geschmackssache. Ich verwende die erste Möglichkeit.
-
Danke
-
In dem Fall sind Threads aber weniger geeignet, weil du nur aus dem GUI Thread auf GUI Elemente zugreifen kannst. Nimm enen QTimer, das ist die einfachste und sinnvollste Möglichkeit.
-
Ja, bei GUI sind Endlosschleifen eine schlechte Idee.
-
Wie kriege ich eigentlich eine Schleife in einen Thread?
QThread *thread = new QThread; /*Schleife*/->moveToThread(thread); thread()->start();
-
Sieh dir den Konstruktor von QThread an. Die Schleife musst du schon selbst in eine Funktion auslagern.