Seite 1 von 1

Applikation in GUI-Thread laufen lassen

Verfasst: 9. Oktober 2009 14:08
von KartoffelKiffer
Hallo,

ich habe eine Applikation, die ihren kompletten Ablauf in dem selben Thread laufen hat, in der auch die GUI läuft.

Ich habe also speziell ein MainWindow. In dieser Klasse wird ein Ablauf gestartet, der etwa 2 Sekunden dauert.

Für diese 2 Sekunden ist die Oberfläche komplett eingefroren.

Jetzt kann es auch sein, dass der Ablauf n Mal hintereinander läuft, sodass Ausgaben in der Oberfläche garnicht mehr dargestellt werden. Bzw erst dargestellt werden, wenn alle Abläufe durch sind.

Man kann sich in etwa vorstellen, wie lästig eine Oberfläche ist, die zwar arbeitet, aber nicht bedienbar ist. Klicke ich die Oberfläche an, während das Programm noch arbeitet, so erhalte ich auch ständig die Meldung "Keine Rückmeldung".

Ist meine Annahme nun korrekt, dass es sich dabei um die Problematik handelt, dass der Ablauf in dem selben Thread stattfindet, wie auch die GUI? Und ist das Problem anderweitig zu lösen, als einen eigenen Thread für den Ablauf zu starten?

Meinetwegen sind auch Windows- (MSDN) Funktionen ok, das stellt kein Problem dar.

In der Applikation wird noch mit Qt 3.11 gearbeitet. Ich hoffe nicht, dass es dort Probleme mit der Thematik gibt.


LG KK

Verfasst: 9. Oktober 2009 14:35
von -=Freaky=-
koenntest du vielleicht alle paar ms (bspw. alle x schleifendurchlaeufe)

Code: Alles auswählen

qApp->processEvents();
aus dem einen "thread fuer alles" aufrufen?

allerdings wuerde ich auch sagen, dass ein worker-thread fuer die programmablaeufe ohne gui wohl eleganter waere.

mfg,
julian

Verfasst: 9. Oktober 2009 14:41
von toem

Verfasst: 9. Oktober 2009 14:57
von KartoffelKiffer
Argh, das war es schon. Vielen Dank!! Hatte verzweifelt versucht auch schon auf Windows-Ebene zu suchen.... Nochmals, danke!