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
Anzeigeprobleme Win und Mac
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
Gut Schuß
VuuRWerK
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
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.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
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
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
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)