2016-06-13 38 views
1

我正在使用QT5.51。爲什麼t1無效?:QTime將新對象添加到新對象

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

我希望得到「00:02:02」,但我得到了錯誤「」。

+0

我不得不提到我最近從QT4改爲QT5。我查看了「C++ API變更」,發現「將天添加到空QDate或秒數爲空的QTime將不再返回有效的QDate/QTime。」也許這就是原因。 http://doc.qt.io/qt-5/sourcebreaks.html –

回答

3

最近默認構造的QTime對象以無效狀態啓動。向無效時間添加秒會使其無效 - 畢竟,這是一個無效的時間點,而不是像您期望的那樣是午夜。這幾乎是一種NaN類型的行爲。

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

構建一個空的時間對象。空時間可以是QTime(0, 0, 0, 0)(即午夜)對象,除了isNull()返回trueisValid()返回false

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

返回一個空的時間,如果這個時間是無效的。

+0

所以我改爲QTime t1(0,0,0,0); t1.addSecs(122)...它變得「真」,但它沒有添加任何東西,爲什麼?如果我將t1.addSecs(122)分配給一個新的無效QTime對象「t2」,它將起作用。 –

+1

,因爲'addSeconds'不會添加到當前對象,但會返回一個新的秒 –

3

我想我明白了:

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

= true "00:02:02"