首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTime向新对象添加秒数

QTime向新对象添加秒数
EN

Stack Overflow用户
提问于 2016-06-13 06:19:52
回答 2查看 2.6K关注 0票数 1

我正在使用QT5.51。为什么t1无效?:

代码语言:javascript
复制
QTime t1 = QTime().addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-13 06:24:27

新构造的默认QTime对象处于无效状态。

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

将秒添加到无效的时间会使时间变得无效--毕竟,这是一个无效的时间点,而不是你所期望的午夜。这基本上是一种南式行为。

QTime QTime::addSecs(int s) const ..。 如果此时间无效,则返回空时间。

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

QTime::QTime(int h,int m,int s= 0,int ms = 0) 构造一个小时h、分钟m、秒s和毫秒ms的时间。

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

代码语言:javascript
复制
QTime t1 = QTime(0, 0).addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");

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

票数 2
EN

Stack Overflow用户

发布于 2016-06-13 06:42:18

我想我明白了:

代码语言:javascript
复制
QTime t1(0,0,0,0);
t1 = t1.addSecs(122);
qDebug() << t1.isValid() << t1.toString("hh:mm:ss");

= true "00:02:02"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37782966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档