Seite 1 von 1

QTableWidget Datum-Sortieren

Verfasst: 22. Juli 2010 00:27
von wirbelwurm
Moin,

ich habe folgene Daten in der Datenbank stehen. Nun möchte ich gerne über die Spalten das Datum sortieren. Wenn ich nach Datum sortiere ist die Sortierung so:

Fahrzeug | Datum
f1 | 03-07-2010
f2 | 09-10-2010
f3 | 19-05-2010
f4 | 25-07-2010

Nun möchte ich gerne, dass das Datum korrekt sortiert wird. Jetzt Sortiert mir Qt das Datum als String. 03,09,19,25...

Wie bekomme ich es hin, dass das Datum richtig formatiert wird? Gibt es für die Tabellen einen Renderer oder so etwas ähnliches? Ich habe leider noch nichts gefunden.

Könnte ich statt QWidgetTableItems auch QDateTime-Items einfügen? Würde dann die Tabelle richtig sortiert werden?

Könnte man vielleicht ganze Spalten ein Format zuweisen? Beispielsweise Datum?

Ich würde mich freuen, wenn ihr mir bei meinem Problem weiter helfen könnten. Vielen Dank im voraus :)

Gruß
Wirbelwurm

Verfasst: 22. Juli 2010 08:38
von MartinS
Moin,

wie erstellst du denn die Items?
Verwendest du:
- QTableWidgetItem(const QString &text, int type = Type)

Wenn das der Fall ist, probier mal folgendes:

Code: Alles auswählen

QTableWidgetItem *pItem = new QTableWidgetItem();

QDateTime dateTime; // Für das jeweilige Datum
pItem->setData(Qt::DisplayRole, dateTime);
pTableWidget->setItem(row, column, pItem);
So müsste das eigentlich korrekt sortiert werden. Funktioniert auch mit anderen Typen wie z.B. int, wenn Zahlen sortiert werden sollen.

Verfasst: 22. Juli 2010 14:43
von wirbelwurm
Vielen Dank für die Antwort :)

Es hat geklappt!


Java-Code

Code: Alles auswählen

QTableWidgetItem pItem = new QTableWidgetItem(); 
						
						QDateTime dateDb = QDateTime.fromString(rs.getString(i), "yyyy-MM-dd HH:mm:ss");
						QDate dateTable = QDate.fromString(dateDb.toString("dd-MM-yyyy"), "dd-MM-yyyy");
						
						pItem.setData(0,dateTable);
						
						table.setItem(row, i - 1 , pItem);

Verfasst: 23. Juli 2010 15:00
von dontinelli
Etwas umständlich. Schon mal QDateTime::date() angeschaut?