Applikation in GUI-Thread laufen lassen

Alles rund um die Programmierung mit Qt
Antworten
KartoffelKiffer
Beiträge: 101
Registriert: 27. Februar 2008 15:59

Applikation in GUI-Thread laufen lassen

Beitrag 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
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
toem
Beiträge: 124
Registriert: 17. März 2009 14:01

Beitrag von toem »

KartoffelKiffer
Beiträge: 101
Registriert: 27. Februar 2008 15:59

Beitrag von KartoffelKiffer »

Argh, das war es schon. Vielen Dank!! Hatte verzweifelt versucht auch schon auf Windows-Ebene zu suchen.... Nochmals, danke!
Antworten