Seite 1 von 1

QPuushbotton blockiert die Gui

Verfasst: 9. September 2010 13:34
von july
Hallo,
ich hab ein Problem.

void MainWindow::tStartButtonHandler() {
...
while(1){
//tu was
}
}

wegen der while-Schleife funktionniert mein Fenster nicht mehr.
Wie kann ich das vermeiden, so das ich mit dem anderen Button den Prozess unterbrechen kann?

Verfasst: 9. September 2010 13:40
von Curtis Newton
Ereignisgesteuerte Programmierung.

Wenn Dein Programm in der whileschleife ist, kann es keine Nachrichten (zeichne dich neu, Button wurde gedrückt, ...) mehr empfangen. Damit scheint es, als wenn es nicht mehr reagiert.

Außerdem gibt es noch einen QProgressDialog.

C.

Verfasst: 9. September 2010 14:01
von july
ich hab jetzt ein repaint dazugemacht, das hat aber nichts geändert :(

void MainWindow::tStartButtonHandler() {
...
ui.tabWidget->repaint();
while(1){
//tu was
}
}

Verfasst: 9. September 2010 14:09
von kater
Wenn dein Programm in der Schleife ist, passiert nichts mehr.

Deine Schleife scheint ziemlich lange zu laufen. Ich rate dir jetzt eifnach mal, die Schleife in einen Thread auszulagern. Dann friert das Programm zumindest nicht mehr ein.

Das Thema Thread hatten wir schon paarmal, einfach suchen.

Verfasst: 9. September 2010 14:12
von franzf
Entweder in der Schleife bei jedem xten Durch lauf ein "QApplication::processEvents()" einbauen (nicht so schön), oder einen neuen Thread starten (schöner aber nicht so einfach).
Schau z.B. mal hier vorbei, da steht eigentlich ganz viel dabei.