QPuushbotton blockiert die Gui

Alles rund um die Programmierung mit Qt
Antworten
july
Beiträge: 21
Registriert: 9. September 2010 13:19

QPuushbotton blockiert die Gui

Beitrag 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?
Curtis Newton
Beiträge: 122
Registriert: 11. Juni 2008 18:39

Beitrag 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.
july
Beiträge: 21
Registriert: 9. September 2010 13:19

Beitrag von july »

ich hab jetzt ein repaint dazugemacht, das hat aber nichts geändert :(

void MainWindow::tStartButtonHandler() {
...
ui.tabWidget->repaint();
while(1){
//tu was
}
}
Zuletzt geändert von july am 9. September 2010 14:10, insgesamt 1-mal geändert.
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Antworten