如何将整数变量转换为 QTime 对象

Posted

技术标签:

【中文标题】如何将整数变量转换为 QTime 对象【英文标题】:how to convert integer variable into QTime object 【发布时间】:2014-07-04 04:32:15 【问题描述】:

我对这个 QT 东西很陌生。这可能是一个愚蠢的问题,但我找不到任何答案。我浏览了 qt 文档并搜索了互联网以找到这个问题的答案。

我的问题是,假设有一个“整数变量”,其持续时间值以秒为单位。我需要将其转换为 QTime 对象以作为 QTime 返回。我怎样才能在 Qt creator 中做到这一点??..

int seekTime;
int seconds = QTime().secsTo(duration);
seekTime = seconds * bytePos/totalSize;
return seekTime;

我需要将此 seekTime 变量作为 QTime 对象返回,我该怎么做?

提前感谢..!

【问题讨论】:

当你构造你的 QTime 对象 QTime::QTime ( int h, int m, int s = 0, int ms = 0 ) 输入 0 小时和 0 分钟.. @drescherjm 我认为你的答案是问题的解决方案,但你能进一步描述一下我如何才能真正做到这一点我在尝试这个时遇到了错误。\ 否 - 这仅在秒数小于 60 秒时有效 - 来自 Qt 文档:“h 必须在 0 到 23 的范围内,m 和 s 必须在 0 到 59 的范围内,并且ms 必须在 0 到 999 的范围内。” 因此您可以计算出您的“持续时间”有多少小时、分钟和秒,将其拆分,然后以这种方式使用构造函数。 @TWEthanx 是的,我后来看到了..首先我认为它是正确的,因为我只是略读了 docx..但是在我看到它之后..thanx 无论如何。\ 【参考方案1】:

这应该可行。

QTime t = QTime().addSecs(duration);

这是我试过的一个小程序:

#include <iostream>

#include <QTime>

int main()

   int durationInSeconds = 40;
   QTime t = QTime().addSecs(durationInSeconds);
   std::cout << "h: " << t.hour() << ", m: " << t.minute() << " s: " << t.second() << ", ms: " << t.msec() << std::endl;
   return 0;

这是我得到的输出:

小时:0,米:0 秒:40,毫秒:0

更新

QTime 也可以构造为将秒表示为:

int durationInSeconds = 40;
QTime t(0, 0, durationInSeconds);

更新 2

函数secsTo 可用于计算QTime 的两个实例之间的秒差。这是文档:

int QTime::secsTo (const QTime & t) const

返回从这个时间到 t 的秒数。如果 t 早于这个时间,则返回的秒数为负数。

因为 QTime 测量一天内的时间,一天有 86400 秒,所以结果总是在 -86400 和 86400 之间。

secsTo() 不考虑任何毫秒。

假设你有:

QTime t1(0, 1, 0:
QTime t2(0, 0, 45);

int secs = t2.secsTo(t1); // secs should be equal to 15.
secs = t1.secsTo(t2);     // secs should be equal to -15.

希望能稍微澄清一下QTime::secsTo 的预期行为。

【讨论】:

不,我不需要添加秒数。它增加了 t 的持续时间。我只需要转换已有的。 对不起你的努力,但没有我试过了。它不是我寻求的答案..你知道如何通过使用构造函数来完成吗?? @Mlarnt90,查看我的更新。希望这对你有用。 只要秒不超过 59 秒就可以使用,否则会创建一个无效的 QTime。我认为这里唯一可能的解决方案是使用返回的秒差来自己计算小时和分钟。

以上是关于如何将整数变量转换为 QTime 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AutoMapper 将对象列表转换为整数列表?

如何使用 C++ 将字符串中的字符转换为整数变量

怎么样将QString转换为QTime,有这样的函数吗

如何将整数转换为R中的分类数据?

如何在python中将多值变量转换为整数[重复]

如何将多个整数的列表转换为单个整数?