[Qt 4.6.2] Model/View zu langsam
-
Hallo,
ich versuche momentan einen Editor für bestimmte XML Dateien mit Hilfe des Qt Model/View Frameworks zu erstellen.
Dafür verwende ich QTableView, sowie zwei separate Models, die von QAbstractTableModel abgeleitet sind.
Das Anzeigen der Daten funktioniert auch, nur ist das ganze furchtbar langsam, obwohl der QTableView nur etwas mehr als 100 Einträge anzeigen muss.
Bei der Fehlersuche ist mir lediglich aufgefallen, dass vom View ständig die data() und headerData() Methoden der Models aufgerufen werden, z.B. wenn ich etwas markiere oder einfach nur scrolle.
Die eigentlich relativ aufwändigen Operationen innerhalb dieser Methoden scheinen aber nicht das Problem zu sein, da auch das Zurückgeben von festen Dummy-Werten keine (merkliche) Geschwindigkeitssteigerung brachte.Ich kann mir nicht vorstellen, dass das Model/View Framework mit den paar Einträgen schon überfordert ist, weswegen ich den Fehler bei mir vermute.
Allerdings weiß ich nicht mehr wo ich suchen könnte. Vielleicht kennt ja jemand die typischen Flaschenhälse und Fehler die man beim Model/View Framework von Qt vermeiden sollte.
Danke im Voraus,
Cute
-
Vielleicht würde ein bisschen Code weiterhelfen.
Das Model/View-Framework ist jedenfalls mit 100 Einträgen nicht überfordert. Ich habe damit schon größere SQLite-Datenbanken angezeigt und sowohl das Laden der Daten als auch das Bearbeiten/Scrollen ging ohne Verzögerung (das war sogar in Python!)
-
Ich habe damit schon größere SQLite-Datenbanken angezeigt und sowohl das Laden der Daten als auch das Bearbeiten/Scrollen ging ohne Verzögerung (das war sogar in Python!)
Okay, das ist beruhigend.
Mein Problem habe ich inzwischen lokalisiert: Wie eingangs vermutet waren doch die data(), headerData(), columnCount() und rowCount() Methoden das Problem.
In den ersten beiden hatte ich ja testweise feste Dummy-Werte zurückgeben lassen, bei den letzten beiden habe ich das aber nicht gemacht - als ich das jetzt mal nachgeholt habe lief alles butterweich.Ich hatte allerdings auch absichtlich bisher den Zugriff auf die zugrunde liegenden Daten noch nicht optimiert, da ich mich erstmal auf die Performance von QDomDocument verlassen wollte.
Wie ich jetzt gesehen habe, reicht sie wohl nicht aus.Gruß,
Cute