QTime为新对象添加秒

QTime add seconds to new object

本文关键字:添加 对象 新对象 QTime      更新时间:2023-10-16

我使用的是QT5.51。为什么t1无效?:

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

我本想得到"00:02:02",但我得到了"。

我想我得到了:

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

新默认构建的QTime对象以无效状态启动。

QTime::QTime()

构造一个空时间对象。空时间可以是QTime(0, 0, 0, 0)(即午夜)对象,除了isNull()返回trueisValid()返回false

在无效时间中添加秒会使其无效-毕竟,这是一个无效的时间点,而不是你所期望的午夜。这几乎是一种NaN类型的行为。

QTime QTime::addSecs(int s)const

如果此时间无效,则返回null时间。


要在有效状态下创建QTime,您可以使用其他构造函数

QTime::QTime(int h,int m,int s=0,int ms=0)

构造一个小时h、分钟m、秒s和毫秒ms的时间。

因此午夜初始化的QTime将是QTime(0, 0);因此,OP代码应该这样调整:

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

您还可以使用其他几种辅助静态方法,这取决于您需要如何初始化它