将格式化文本显示到QTextEdit,就像在C的printf中一样

时间:2014-05-16 22:22:26

标签: c++ qt qstring qtcore qtextedit

我想在qttextedit中显示一个double。例如,如果我有

double f = 0.0;

我做了

ui.textEdit->insertPlainText("f = "+ QString::number(f ));

我得到了

  

f = 0

我想展示

  

f = 0.000

我想要的小数位数。

无论如何要这样做..

2 个答案:

答案 0 :(得分:1)

我现在无法测试,但我会尝试ui.textEdit->insertPlainText(QString("f = %1").arg(f, 5, 'g', -1, QLatin1Char('0')));

有关详细信息,请参阅this

答案 1 :(得分:1)

您至少有两个Qt选项:

1)QString & QString::sprintf ( const char * cformat, ... )

QString result;
double f = 0.000;
result.sprintf("%.3f", f);
ui.textEdit->insertPlainText(result);

2)QString QString::arg ( double a, int fieldWidth = 0, char format = 'g', int precision = -1, const QChar & fillChar = QLatin1Char( ' ' ) ) const

double f = 0.000;
QTextStream standardOutput(stdout);
standardOutput << QStringLiteral("f = %1").arg(f, 0, 'f', 3) << "\n";

在这里,您可以找到易于运行的测试代码,以便进行验证。

的main.cpp

#include <QString>
#include <QTextStream>

int main()
{
    QString result;
    double f = 0.000;
    result.sprintf("%.3f", f);
    QTextStream standardOutput(stdout);
    standardOutput << QStringLiteral("f = %1").arg(f, 0, 'f', 3) << "\n";
    standardOutput << "f = " << result << "\n";
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

构建并运行

qmake && make && ./main

输出

f = 0.000
f = 0.000