ListView + StringListModel - Update-Performance (Log) ?

Alles rund um die Programmierung mit Qt
Antworten
FloGrobosch
Beiträge: 8
Registriert: 24. Juli 2007 10:38

ListView + StringListModel - Update-Performance (Log) ?

Beitrag von FloGrobosch »

Hallo.
Ich habe folgendes Problem mit Qt: Ich muss für eine Applikation ein Log-Fenster prgrammiere. Das ist soweit wirklich kein Problem, habe die Standard-Variante QStringListModel, QListView genommen. Nun werden die Daten aber sehr häufig aktualisiert, die Strignglist erhält neue Strings im Zeitbereich 5x / Sekunde. Dabei geht über kurz oder lang die CPU un die Knie, je nach erlaubter Puffergroße stürzt das programm sogar ab.
Gib es eine performantere Variante, als jedes mal nachdem die StringList erweiter wurde wieder setStringList() auf dem Model aufzurufen?

Danke für Hilfe!
Flo
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ja, das QStringListModel selber schreiben (Beispiel in der Doku).
FloGrobosch
Beiträge: 8
Registriert: 24. Juli 2007 10:38

Beitrag von FloGrobosch »

Wo genau liegt denn das meiste Potential, um die Performance zu erhöhen? Vielleicht seh ich auch nur den Wald vor lauter Bäumen nicht, aber im Grunde arbeite ich doch immer auf der internen liste lst?

Danke schonmal & gruß, Flo
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wo genau liegt denn das meiste Potential, um die Performance zu erhöhen?
nur genau so viel und genau so schnell anzeigen, wie es ueberhaupt fuers menschliche auge "lesbar" wird.

Also aller 200 msec updaten faend ich schon etwas uebertrieben .... fuer nen geschmeidiges runterscrollen isses zu wenig, fuer mitlessen ist es eindeutig zu viel ....

Nur das anzeigen wo sich grad der ausschnitt befindet

nen ringpuffer im hintergrund laufen lassen und nur bei bedarf die zeieln neu holen lassen ....

kein qlistview verwenden ... das war bei uns relativ unperformant (qt 4.1.2) tableview verhaelt sich viel performanter, keine ahnung wieso

Ciao ...
Antworten