Seite 1 von 1

Anzeigeprobleme Win und Mac

Verfasst: 27. November 2007 21:03
von Frostie
Hallo,

ich hab ein Programm geschrieben, welches Berechnungen durchführt.

Diese Berechnungen dauern bis zu 5h. Daher wollte ich während der Berechnung im Fenster ausgeben, was und wie lange er noch etwas macht.

So, dass funktioniert auch so grob. Folgendes Problem:

Unter Win wird das QLabel mit SetShown(false) ... (true) aktuallisiert und funzt auch, bis man versucht, dass MainWindow zu verschieben, dann wird das Fenster weiß und erst wieder normal, wenn die Berechnung zu Ende ist.

Wie kann man das verhindern, bzw beheben??

Unter Mac wird gar nix angezeigt, bzw erst am Ende der Berechnung aktualisiert.

Kennt hier jemand eine Lösung?

Danke

Gruß
Matthias

Verfasst: 27. November 2007 21:27
von VuuRWerK
Klingt nach einem typischen Problem für Threads: [url=file:///C:/Qt/4.3.2/doc/html/qthread.html]Hier[/url] solltest Du finden was Du suchst.

Gut Schuß
VuuRWerK ;)

Verfasst: 28. November 2007 07:26
von macman
Ein processEvents irgendwo in der Schleife dürfte die schnellere Lösung sein, wenn das Programm sowieso nichts anderes macht. Ein Thread für die Berechnung ist allerdings die sauberere Sache, aber manchmal lohnt sich der Aufwand einfach nicht.

Verfasst: 28. November 2007 08:26
von Frostie
Ok,

danke, werd ich heut mal probieren.

Das mit den Threads war auch für mich der erste Gedanke, ist halt etwas aufwändig.

Danke nochmal.

Verfasst: 28. November 2007 09:29
von VuuRWerK
Ist vllt etwas aufwändig sowas in ein schon fertiges Programm einzubauen klar aber so kannst Du auch gleich nochmal schauen ob Du nicht ein paar Teile Deiner Berechnung absplitten kannst und diese Ebenfalls in einen Thread auslagerst, so kannst Du vielleicht noch die Berechnungszeit verkürzen.

Die Lösung "processEvents" ist zwar die schnellere und einfachere, und in einem Prototypen durchaus gängige, Methode aber am Ende die selbe wie in .NET das "Application.DoEvents", einfach eine eher unsaubere/unschöne Lösung.

Gut Schuß
VuuRWerK ;)