[GELÖST] probleme mit schleifen und "return app.exec&qu
[GELÖST] probleme mit schleifen und "return app.exec&qu
ich brauch in meinem programm einen kleinen countdown, der jede sekunde zählt. da gibt es aber nich ein kleines problem.
wenn ich meine schleife (mit time_wait & goto xyz) VOR return app.exec
schreibe, dann berechnet er zwar brav, aber man sieht davon nicht viel. wenn ich es nach return app.exec schreibe, wird es komplett ignoriert.
wie kann ich nach dem start des programms (und damit meine ich nicht zub. mainWindow.show()) noch aktionen vornehmen?
wenn ich meine schleife (mit time_wait & goto xyz) VOR return app.exec
schreibe, dann berechnet er zwar brav, aber man sieht davon nicht viel. wenn ich es nach return app.exec schreibe, wird es komplett ignoriert.
wie kann ich nach dem start des programms (und damit meine ich nicht zub. mainWindow.show()) noch aktionen vornehmen?
Zuletzt geändert von LQ am 14. Oktober 2007 14:15, insgesamt 2-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
ok, ich versuchs mal verständlicher zu formulieren.
Das Programm besteht aus 2 teilen:
1. Der Konfiurator:
Hier gibt man ein oder mehrere gewünschte(s) Datum(s) mit Uhrzeit ein. Dieser Speichert das eingegebene in der Registry ab.
2. Das Hauptprogramm
Hier werden die werte aus der registry ausgelesen und in sekunden umgerechnet. dann wird dass aktuelle datum und die aktuelle zeit eingelesen und in sekunden umgerechnet. mit der days.to funktion werden daraus dann die sekunden bis zum gewünschten datum(s) angezeigt.
Das Funktioniert so weit, dass bei jedem Programmstart alles brach eingelesen wird. Es soll aber jede Sekunde neu eingelesen, berechnet und ausgegeben werden.
Und jetzt zum Problem:
Wenn ich die schleife mit dem zuständigen code VOR der Zeile
platziere, dann hängt sich das programm auf, da er ja in der schleife hängt und nicht zum exec() kommt.
Wenn ich es danach platziere, wird es schlicht und einfach ignoriert.
Wo muss ich die Schleife reinschreiben, damit sie jede sekunde ausgeführt wird. (das mit jede sekunde hab ich gelöst, blos wird es entweder nicht angezeigt oder komplett ignoriert.)
--------------------------------------------------------------
So, ich hoffe das war jetzt verständlich genung.
Das Programm besteht aus 2 teilen:
1. Der Konfiurator:
Hier gibt man ein oder mehrere gewünschte(s) Datum(s) mit Uhrzeit ein. Dieser Speichert das eingegebene in der Registry ab.
2. Das Hauptprogramm
Hier werden die werte aus der registry ausgelesen und in sekunden umgerechnet. dann wird dass aktuelle datum und die aktuelle zeit eingelesen und in sekunden umgerechnet. mit der days.to funktion werden daraus dann die sekunden bis zum gewünschten datum(s) angezeigt.
Das Funktioniert so weit, dass bei jedem Programmstart alles brach eingelesen wird. Es soll aber jede Sekunde neu eingelesen, berechnet und ausgegeben werden.
Und jetzt zum Problem:
Wenn ich die schleife mit dem zuständigen code VOR der Zeile
Code: Alles auswählen
return app.exec()Wenn ich es danach platziere, wird es schlicht und einfach ignoriert.
Wo muss ich die Schleife reinschreiben, damit sie jede sekunde ausgeführt wird. (das mit jede sekunde hab ich gelöst, blos wird es entweder nicht angezeigt oder komplett ignoriert.)
--------------------------------------------------------------
So, ich hoffe das war jetzt verständlich genung.
-
dontinelli
- Beiträge: 146
- Registriert: 22. September 2006 20:53
und wo genau?
ich hab genau 3 dateien in meinem projekt:
-ui_Config.h
-ui_Main.h
-main.cpp
diebeiden Header wurden vom uic erstellt, die hab ich nicht angerührt.
die main.cpp sieht etwa so aus:
wenn ich es so mache, dann sieht man nix ausser ein mainwindow mit dem interface und einer sanduhr (der mauszeiger)
wenn ich es so mach, dann wird alles hinter "return app.exec()" ignoriert und ich bekomm ein programm bei dem ich nur auf den ende button klicken kann.
wo in diese dateit GENAU muss ich den "caluclatecode" hinstecken?
ich hab genau 3 dateien in meinem projekt:
-ui_Config.h
-ui_Main.h
-main.cpp
diebeiden Header wurden vom uic erstellt, die hab ich nicht angerührt.
die main.cpp sieht etwa so aus:
Code: Alles auswählen
#include...
void time_wait (...)
{
[...]
}
int main (...)
{
QApplication app;
QMainWindow mainWindow;
Ui::mainWindow ui;
ui.setupUi(&mainWindow);
[...] //Code der vor dem erscheinen des Interface abgearbeitet wird.
mainWindow.show();
calculatecode:
[...]
time_wait(1);
goto calculatecode;
return app.exec()Code: Alles auswählen
#include...
void time_wait (...)
{
[...]
}
int main (...)
{
QApplication app;
QMainWindow mainWindow;
Ui::mainWindow ui;
ui.setupUi(&mainWindow);
[...] //Code der vor dem erscheinen des Interface abgearbeitet wird.
mainWindow.show();
return app.exec()
calculatecode:
[...]
time_wait(1);
goto calculatecode;wo in diese dateit GENAU muss ich den "caluclatecode" hinstecken?
Hast du schon mal irgendetwas in C bzw. C++ programmiert?
"time_wait(1);" kann nie ausgeführt werden, wenn davor ein "return" steht.
Code: Alles auswählen
return app.exec()
calculatecode:
...
time_wait(1);