【问题标题】:display formatted text to QTextEdit like in C's printf像在 C 的 printf 中一样将格式化的文本显示到 QTextEdit
【发布时间】:2014-05-16 22:22:25
【问题描述】:

我想在 qttextedit 中显示双精度。例如,如果我有

double f = 0.0;

我愿意

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

我明白了

f =0

我想展示

f = 0.000

我想要的小数位数..

无论如何都要这样做..

【问题讨论】:

  • 你可以一直使用sprintf...但你可能不应该。
  • @OlehPrypin:不,你不应该因为 QString(Literal) 是你的朋友,甚至 QString 中的 sprintf 函数也不推荐用于新代码。阅读我的回答中的链接文档。

标签: c++ qt qstring qtcore qtextedit


【解决方案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

【讨论】:

    【解决方案2】:

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

    更多详情请见this

    【讨论】:

    • @Programmer:代码不起作用(甚至无法编译)并且链接可能指向错误的方法。另外,最好使用 QStringLiteral。
    • 谢谢,Laszlo.. 我没有尝试代码.. 但你的答案更详细
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多