Ich verwende QML TableView + eigene QAbstractTableModel und QSortFilterProxyModel. Ich habe das Sortieren implementiert, aber es funktioniert langsam. Ich habe diese Modelle ohne QML verwendet, aber mit QTableView - es hat perfekt funktioniert. 30 000 Artikel sortieren weniger als 1 Sekunden. Kann jemand helfen? Wo ist das Problem?QML Sortierung in Tabellenansicht ist sehr langsam
1
A
Antwort
0
Ich habe angenommen, dass QML alle Elemente neu streichen, während Model Daten sortiert (in jeder Iteration). Ich habe Lösung gefunden, für das Sortieren Sie müssen:
- Schalten Sie Modell in QML
- Sortieren von Elementen (Use-Modell)
- Return-Modell zurück.
Zum Beispiel
onSortIndicatorOrderChanged: {
model = null
MyModel.Sort(...)
model = MyModel
}
Mehr Details https://forum.qt.io/topic/52026/solved-sorting-qml-tableview-is-slow/4
Haben Sie versucht, es Profilierungs? Der Ersteller verfügt über einen QML-Profiler. Haben Sie ein benutzerdefiniertes Styling für das TableView? – Mitch
Wie verwende ich QML Profiler? Weil ich WPF und sehr schläfrig verwendet habe –
Und ich habe es profiliert. Profiler zeigte mir das Problem in void MySortFilterProxyModel :: Sort (const QByteArray & Rolle, Reihenfolge Qt :: SortOrder) { QSortFilterProxyModel :: setSortRole (RoleKey (Rolle)); sortieren (0, Reihenfolge); invalidate(); } –