Seite 1 von 1
Update Problem - GUI einfrieren
Verfasst: 16. Mai 2011 16:56
von Julia
Hallo,
möchte nach einem "Button-Klick" mehrere Widgets und Labels verändern.
Diese sollen aber nicht der Reihe nach, sondern auf einen Schlag aktualisiert angezeigt werden.
Weis jemand wie ich die GUI für einen Moment einfrieren kann,
dass danach der upgedatete Stand auf einen Schlag erscheint?
Gruß Juli
Verfasst: 16. Mai 2011 17:19
von franzf
Wie und wieso "auf einen Schlag"? Selbst mehrere hundert Widgets lassen sich codeseitig hintereinander aktualisieren und du merkst keinen Zeitversatz. Ich fände es lästiger, wenn ich nach dem Klick ein deutliches Lag spüre, nur weil deine Optimierung bei mir nicht greift (zu lange eingestellter Timer o.Ä.)
Bitte: versuch nicht von vornherein auf ein bestimmtes Szenario hin zu optimieren. Optimierungen erst dann angehen, wenn du merkst dass es ein Problem gibt. Nur weil du denkst, es könnte ein Problem geben, und schon an Optimierungsstrategien zu denken, bevor überhaupt eine Zeile Code steht, ist Zeitverschwendung.
show hide oder Wartecursor
Verfasst: 16. Mai 2011 17:35
von softwaremaker
Falls die Aktualisierung wirklich so lange dauert, einfach den Wartecursor anzeigen lassen:
Code: Alles auswählen
QApplication::setOverrideCursor(Qt::WaitCursor);
Widgets aktualisieren...
QApplication::restoreOverrideCursor();
Ein Einfrieren des Widgets ist nicht üblich und deshalb wohl nicht implementiert.
Verfasst: 16. Mai 2011 17:44
von RHBaum
wie franzf scho andeutet ... ist das updaten von widgets eigentlich recht flott . selbst 1000te von widgets sollt man in weniger wie 1 sek updaten koennen.
Dein problem ist sicher das dein Code sowas in der Art macht:
Widget/Label-Text ermitteln
Widget/Label updaten
Widget/Label-Text ermitteln
Widget/Label updaten
Widget/Label-Text ermitteln
Widget/Label updaten
Widget/Label-Text ermitteln
Widget/Label updaten
Widget/Label-Text ermitteln
Widget/Label updaten
wenn das "ermitteln" bissi dauert, kann es sein das es den von Dir so unerwuenschten Effekt erzeugt.
Loesung waere zuerst alle Texte oder was weiss ich ermitteln, und dann alles auf einen schlag updaten ...
Oder machst du was mit dem MVC (Model View Controller) System (QTrieview, QListView QTableView ... ) da sind die Dinge bissi anders zu beachten ....
Ciao ...