2012-03-27 4 views
2

Angenommen, ich habe eine QTableView mit einem entsprechenden Modell. Diese Ansicht zeigt nur Zahlen an und ich möchte unterschiedliche Zahlenformate für verschiedene Spalten.Wie kann ich Zahlenformate in Qt's Model/View Framework hinzufügen?

Einige Beispiele:

  • In der Preisspalte möchte ich zwei Dezimalstellen und ein Komma als Trennzeichen.
  • In der Länge Spalte möchte ich keine Dezimalstellen, aber ich möchte immer noch die Komma Trennzeichen.
  • In der Dauer Spalte möchte ich das gleiche Format wie die Preis Spalte aber rote Farbe, wenn der Wert negativ ist.

Jetzt konnte ich dies in der Datenfunktion des Modells tun. Qt.DisplayRole verarbeitet die Zahlenformatierung, und Qt.ForegroundRole kann die Färbung behandeln. Während die Farbgebung wie vorgesehen funktioniert, bricht die Formatierung der Zahlen die Sortierung.

Gibt es einen einfacheren Weg, dies zu erreichen? Ich habe versucht zu googlen, um zu sehen, was ich finden konnte, aber gute Beispiele für das, was ich hinter mir habe, entziehen sich mir.

Antwort

3

Wenn Sie QStandardItemModel als Modell verwenden, können Sie die sortRole Set zu verwenden, sagen wir, Qt::EditRole statt Qt::DisplayRole.

Wenn Sie etwas wie QAbstractItemModel verwenden, können Sie die sort-Methode überschreiben und etwas ähnliches tun, d. H. Den Qt::EditRole-Wert verwenden. Sie können auch ein QSortFilterProxyModel um Ihr Modell wickeln und die Methode lessThan überschreiben.

+0

Niemals zuvor die Rolle 'sortRole' gesehen. Das sieht nach einem Gewinner aus. Vielen Dank. – c00kiemonster

Verwandte Themen