QDateEdit mit Wert aus einer QList<QByteArray> setzen

Verschiedenes zu Qt
Antworten
tobbbbi
Beiträge: 7
Registriert: 7. Juni 2009 17:56

QDateEdit mit Wert aus einer QList<QByteArray> setzen

Beitrag von tobbbbi »

Hallo!

Ich hab schon wieder eine Frage.

Und zwar habe ich ein QDateEdit, welches ich mit einem Datums-Wert aus einer QList vom Typ <QByteArray>setzen möchte. Das Datumsformat ist dd.MM.yyyy.
Leider hat das bisher trotz viel Probiererei noch nicht hingehauen.

Folgendes habe ich erfolglos probiert:

1.

Code: Alles auswählen

QList<QByteArray> dvd;
dvd.append(...);

//zerlegen des Datums in seine Bestandteile
QList<QByteArray> dPar = (dvd.at(9)).split('.');
this->ui.purchaseDateEdit->setDate(QDate(dPar.at(2).toInt(),dPar.at(1).toInt(),dPar.at(0).toInt()));
2.

Code: Alles auswählen

QList<QByteArray> dvd;
dvd.append(...);

this->ui.purchaseDateEdit->setDate(QDate::fromString(dvd.at(9), "dd.MM.yyyy"));

Eigentlich wäre die 2. Variante genau das Richtige, aber scheinbar haut das mit dem Konvertieren nicht hin.

Vielleicht wisst ihr ja was? Danke!
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ersetze einfach "Herumprobieren" durch "Verifizieren" ... dann findest du das sicher selbst heraus:

Code: Alles auswählen

qDebug() << dvd.count() << dvd.at(9) << QDate::fromString(dvd.at(9), "dd.MM.yyyy");
this->ui.purchaseDateEdit->setDate(QDate::fromString(dvd.at(9), "dd.MM.yyyy"));
tobbbbi
Beiträge: 7
Registriert: 7. Juni 2009 17:56

Beitrag von tobbbbi »

Hey danke für die schnelle Antwort und den Tipp mit qDebug - sehr nützlich die Funktion, kannte ich noch nicht.
Allerdings funktioniert der von dir gepostete Code bei mir nicht. Macht aber auch nichts.
Zum einen habe ich nämlich schon vorher die ganze Zeit selber verifiziert indem ich mir die Werte einfach auf einem vorhandenen QPushButton habe anzeigen lassen.
Ich denke ich weiß auch, worauf du hinaus willst...mit dvd.count() soll ich mir die Anzahl der gespeicherten QByteArrays anzeigen lassen und evtl. darauf stoßen, dass es ein 10tes ( also at(9)) gar nicht gibt.
Dies ist aber nicht der Fall, was ich mit der Ausgabe auf dem QPushButton auch verifiziert habe.
Allerdings ist mir dabei noch ein sehr merkwürdiges Verhalten aufgefallen:

Code: Alles auswählen

this->ui.cancelPushButton->setText(dvd.at(9));
ergibt einen nach oben verschobenen Text auf dem Button.
Bild




Wenn ich hingegen den "normalen" Weg fahre:

Code: Alles auswählen

this->ui.cancelButton->setText("04.07.1950");
ergibt sich ein ganz normal mittig ausgerichteter Text
Bild

Gibt es dafür eine sinnvolle Erklärung? Ich schätze mal, dass das irgendwas mit dem Nichterkennen bei QDate::fromString(...) zutun haben muss. :shock:
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

tobbbbi hat geschrieben:Gibt es dafür eine sinnvolle Erklärung?
Sieht aus als wär noch ein Linefeed hinter dem Datum.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

tobbbbi
Beiträge: 7
Registriert: 7. Juni 2009 17:56

Beitrag von tobbbbi »

Oh man....autsch :oops: :shock: :lol:
Warum kommt man auf sowas nicht selbst? Ist doch eigentlich ganz logisch. :?
Ich hab nämlich den Wert aus einer Textdatei in die ich zeilenweise schreibe, dabei hat jede Zeile durch Strichpunkte getrennte Werte - so und nun ratet mal an welcher Stelle in der Zeile dieser Datumswert steht?! :roll:
Genau! Ganz am Ende...

Aber vielen Dank!
Antworten