我正在使用QT5.51。爲什麼t1無效?:QTime將新對象添加到新對象
QTime t1 = QTime().addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");
我希望得到「00:02:02」,但我得到了錯誤「」。
我正在使用QT5.51。爲什麼t1無效?:QTime將新對象添加到新對象
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.addSecs(122)...它變得「真」,但它沒有添加任何東西,爲什麼?如果我將t1.addSecs(122)分配給一個新的無效QTime對象「t2」,它將起作用。 –
,因爲'addSeconds'不會添加到當前對象,但會返回一個新的秒 –
我想我明白了:
QTime t1(0,0,0,0);
t1 = t1.addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");
= true "00:02:02"
我不得不提到我最近從QT4改爲QT5。我查看了「C++ API變更」,發現「將天添加到空QDate或秒數爲空的QTime將不再返回有效的QDate/QTime。」也許這就是原因。 http://doc.qt.io/qt-5/sourcebreaks.html –