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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

= true "00:02:02"
Другие вопросы по тегам