[PyQT4] QTreeview Spalte numerisch sortieren

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
roose
User
Beiträge: 4
Registriert: Dienstag 28. April 2009, 20:43

Dienstag 28. April 2009, 20:51

Hallo,

wenn ich nicht falsch liege nimmt ein QTreeWidgetItem nur strings.

Wenn ich also sortiere ist 11 größer als 100. Habe in QT bisher keine
Möglichkeit gefunden einen Typ für eine Spalte zu definieren.

Jemand eine Idee?
lunar

Dienstag 28. April 2009, 23:35

Ein QTreeWidget bzw. ein QTreeWidgetItem hat kein Verständnis von Typ und Bedeutung seines Inhalts und repräsentiert daher alles als Text.

Um nummerische Sortierungen zu ermöglichen, musst du QTreeView mit einem eigenen Modell nutzen. Dann kannst du entweder ".sort()" in deinem Model überschreiben oder ein QSortFilterProxyModel benutzen. Letzteres kann anhand einer bestimmten Rolle sortieren und versteht diverse Datentypen. Siehe dazu auch den Abschnitt über Sortierung in der Dokumentation von QSortFilterProxyModel.

Wenn dir die Begriffe "View", "Modell" und "Rolle" nichts sagen, dann solltest das entsprechende HowTo zum Thema Model/View Programming in der offiziellen Dokumentation durchlesen.
roose
User
Beiträge: 4
Registriert: Dienstag 28. April 2009, 20:43

Mittwoch 29. April 2009, 02:02

Hey Danke. Hat mir weitergeholfen.

Zumindest mit QStandardItemModel, sortiert er bereits numerisch. Ganz ohne eigenes sort oder QSortFilterProxyModel.

Werde mir QSortFilterProxyModel trotzdem mal angucken, sieht sehr interessant aus!
Antworten