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

Alles rund um die Programmierung mit Qt
Antworten
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

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

Beitrag 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?
Zuletzt geändert von Whitefurrows am 25. April 2010 19:32, insgesamt 1-mal geändert.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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...
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag 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();
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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]
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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();
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag 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.
Antworten