2016-04-26 18 views
1

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

+0

Haben Sie versucht, es Profilierungs? Der Ersteller verfügt über einen QML-Profiler. Haben Sie ein benutzerdefiniertes Styling für das TableView? – Mitch

+0

Wie verwende ich QML Profiler? Weil ich WPF und sehr schläfrig verwendet habe –

+0

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(); } –

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:

  1. Schalten Sie Modell in QML
  2. Sortieren von Elementen (Use-Modell)
  3. 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

+0

Gut zu sehen, dass Sie einen Workaround gefunden haben. Es wäre großartig, wenn Sie einen Fehlerbericht mit einem reproduzierbaren Beispiel einreichen könnten. Scheint wie ein ziemlich unangenehmes Problem. – Mitch

+0

Meinst du, Fehler in QT Jira erstellen? –

+0

Yep: bugreports.qt.io – Mitch