Я использую QT5.51. Почему t1 недействителен ?:
QTime t1 = QTime().addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");
Я ожидал получить «00:02:02», но я получаю ложное «».
Недавно построенный по умолчанию 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
Возвращает нулевое время, если это время недопустимо.
Я думаю, я понял:
QTime t1(0,0,0,0);
t1 = t1.addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");
= true "00:02:02"