QTableWidget Datum-Sortieren

Alles rund um die Programmierung mit Qt
Antworten
wirbelwurm
Beiträge: 11
Registriert: 15. Juli 2010 15:13
Kontaktdaten:

QTableWidget Datum-Sortieren

Beitrag 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
MartinS
Beiträge: 6
Registriert: 26. Juli 2007 21:32

Beitrag 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.
wirbelwurm
Beiträge: 11
Registriert: 15. Juli 2010 15:13
Kontaktdaten:

Beitrag 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);
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Etwas umständlich. Schon mal QDateTime::date() angeschaut?
Antworten