将已用时间作为格式化字符串

时间:2014-11-19 14:14:23

标签: c++ qt qstring

我正在寻找最简单的方法来计算和显示Qt中函数的执行时间。结果应为格式为string的{​​{1}} / QString

我知道我可以使用mm:ss获得int毫秒,但是有内置函数可以进行格式化吗?

2 个答案:

答案 0 :(得分:2)

如果您有经过的时间(以毫秒为单位ms),则可以通过以下方式打印mm:ss格式的时间:

QString out = QString("%1:%2").arg( ms / 60000        , 2, 10, QChar('0'))
                              .arg((ms % 60000) / 1000, 2, 10, QChar('0'));

答案 1 :(得分:1)

我在一个应用程序中遇到了同样的问题。只需一点技巧,就可以在toString中使用QTime方法。需要考虑的是,toString还照顾语言环境并允许使用不同的时间格式。这使得它实现起来很简单。

以下完整的代码应该足以解释基本思想:

#include <QApplication>
#include <QTime>
#include <QTimer>
#include <QEventLoop>
#include <QDebug>

int main(int argc, char** args) {
    QApplication app(argc, args);
    QTime x;
    x.start();
    QTimer wait;
    QEventLoop e;
    QTimer::singleShot(500, &e, &QEventLoop::quit);
    e.exec();
    QTime y(0, 0);
    qDebug() << x.elapsed();
    y=y.addMSecs(x.elapsed());
    qDebug() << y.toString("mm:ss.zzz");
}