Anzeigeprobleme Win und Mac

Alles rund um die Programmierung mit Qt
Antworten
Frostie
Beiträge: 60
Registriert: 23. September 2006 09:02

Anzeigeprobleme Win und Mac

Beitrag 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
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag 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 ;)
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 =)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
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.
Frostie
Beiträge: 60
Registriert: 23. September 2006 09:02

Beitrag 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.
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag 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 ;)
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 =)
Antworten