2016-06-13 6 views
1

QT5.51を使用しています。 t1が無効な理由:QTime新しいオブジェクトに秒数を追加

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

私は "00:02:02"を受け取ると予想していましたが、私は偽になります。

+0

私は最近qt5へのqt4から変更されたことに言及しなければなりません。私は "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

ヌル時間オブジェクトを構築。ヌル時間は、がtrueisValid()falseを返すことを除いて、QTime(0, 0, 0, 0)(深夜)のオブジェクトにすることができます。

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

今回が無効の場合はnull時刻を返します。

+0

私はQTime t1(0、0、0、0)に変更しました。 t1.addSecs(122)...「true」が得られますが、何も追加しません。なぜですか?私が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" 
関連する問題