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
ヌル時間オブジェクトを構築。ヌル時間は、が
true
、isValid()
がfalse
を返すことを除いて、QTime(0, 0, 0, 0)
(深夜)のオブジェクトにすることができます。
http://doc.qt.io/qt-5/qtime.html#addSecs
今回が無効の場合はnull時刻を返します。
私はQTime t1(0、0、0、0)に変更しました。 t1.addSecs(122)...「true」が得られますが、何も追加しません。なぜですか?私が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"
私は最近qt5へのqt4から変更されたことに言及しなければなりません。私は "C++ APIの変更"を見て、 "ヌルQDateに日を追加するか、ヌルQTimeに秒を追加すると有効なQDate/QTimeが返されなくなります"多分それは理由です。 http://doc.qt.io/qt-5/sourcebreaks.html –