QTime добавить секунды к новому объекту

Я использую QT5.51. Почему t1 недействителен ?:

QTime t1 = QTime().addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");

Я ожидал получить «00:02:02», но я получаю ложное «».

1

Решение

Недавно построенный по умолчанию QTime Объект запускается в недопустимом состоянии. Добавление секунд к недействительному времени делает его недействительным — в конце концов, это недопустимый момент времени, а не полночь, как вы ожидаете. Это в значительной степени поведение типа NaN.

http://doc.qt.io/qt-5/qtime.html#QTime

Создает объект с нулевым временем. Нулевое время может быть QTime(0, 0, 0, 0) (то есть, полночь), за исключением того, что isNull() возвращается true а также isValid() возвращается false,

http://doc.qt.io/qt-5/qtime.html#addSecs

Возвращает нулевое время, если это время недопустимо.

3

Другие решения

Я думаю, я понял:

QTime t1(0,0,0,0);
t1 = t1.addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");

= true "00:02:02"
3

По вопросам рекламы [email protected]