Seite 1 von 1

QTimeEdit bzw. QTime als Integer? [gelöst]

Verfasst: 22. April 2010 22:20
von Whitefurrows
Hallo,

die Zeit von einem TimeEdit würde ich gerne speichern:

Code: Alles auswählen

QTimeEdit *timeEdit = new QTimeEdit(parent);
timeEdit->setDisplayFormat("HH:mm:ss");
timeEdit->setMaximumTime(QTime(8, 0, 0));
Dazu habe ich folgendes Beispiel, was sich allerdings nur auf Minuten und Sekunden bezieht:

Code: Alles auswählen

QTime time = timeEdit->time();
int secs = (time.minute() * 60) + time.second();
Gelesen werden die Daten dann so:

Code: Alles auswählen

timeEdit->setTime(QTime(0, secs / 60, secs % 60));
Wie kann ich das jetzt erweitern, um die Stunden ebenfalls zu speichern/lesen?

Verfasst: 22. April 2010 22:39
von solarix
Entweder man rechnet es sich selbst aus (als kleine Hilfe: eine Stunde hat 3600s...) oder man lässt rechnen...

Code: Alles auswählen

QTime time = timeEdit->time();
int secs = QTime(0,0).secsTo(time);
...
timeEdit->setTime(QTime(0,0).addSecs(secs));
hth...

Verfasst: 23. April 2010 10:28
von Whitefurrows
Entweder man rechnet es sich selbst aus (als kleine Hilfe: eine Stunde hat 3600s...) oder man lässt rechnen...
Ja, es ist mir schon klar wie die Umrechnung erfolgt. Da hatte ich mich vielleicht nicht deutlich ausgedrückt, sorry!

Dein Beispiel ist schon sehr gut, genau so war es von mir auch gemeint. Allerdings habe ich noch eine Frage dazu. Warum geht es so nicht:

Code: Alles auswählen

QTime time(0,0);
time.addSecs(secs);
qDebug() << "Stunden: " << time.hour();
aber so schon:

Code: Alles auswählen

qDebug() << "Stunden: " << QTime(0,0).addSecs(secs).hour();

Verfasst: 23. April 2010 10:50
von Christian81
Whitefurrows hat geschrieben: Warum geht es so nicht:

Code: Alles auswählen

QTime time(0,0);
time.addSecs(secs);
qDebug() << "Stunden: " << time.hour();
aber so schon:

Code: Alles auswählen

qDebug() << "Stunden: " << QTime(0,0).addSecs(secs).hour();[/quote]
Weil man die Doku nicht liest würde ich sagen: http://doc.trolltech.com/4.6/qtime.html#addSecs

[quote]
Returns a QTime object containing a time s seconds later than the time of this object 
[/quote]

Verfasst: 23. April 2010 10:51
von kater
Weil addSecs ein Objekt zurück gibt. Das musst du auch wieder time zuweisen.

Code: Alles auswählen

QTime time(0,0);
time = time.addSecs(secs);
qDebug() << "Stunden: " << time.hour();

Verfasst: 25. April 2010 19:32
von Whitefurrows
Weil man die Doku nicht liest würde ich sagen: http://doc.trolltech.com/4.6/qtime.html#addSecs
Doch die Doku hatte ich gelesen, aber dennoch war es mir nicht klar.

Danke an alle, jetzt funktioniert es wie im Beispiel von kater gezeigt.