使用arg()将数字附加到QString,有更好的方法吗?

时间:2011-11-24 10:35:19

标签: qt qstring qt4.7

我一直在使用QString :: number()将数字转换为字符串很长时间,现在我想知道是否有比以下更好的东西:

  int i = 0;
  QString msg = QString ("Loading %1").arg (QString::number (i));

我如何备用QString :: number()?我检查了文件,似乎只有“%1”适用,没有像“%d”这样的其他东西可以工作

3 个答案:

答案 0 :(得分:10)

QString的arg()函数确实实现了许多不同类型,并自动检测您提供的内容。为单个arg()调用提供多个参数,如此

// Outputs "one two three"
QString s = QString("%1 %2 %3").arg("one", "two", "three")

仅针对QString(以及const char*)参数实现。

但是,您可以将arg调用链接在一起并仍然使用编号系统:

int i = 5;
size_t ui = 6;
int j = 12;
// Outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 size_t  %2 int%3").arg(i).arg(ui).arg(j);
// Also outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui);

答案 1 :(得分:8)

您可以直接使用arg()这样的

int i = 0;
QString msg = QString ("Loading %1").arg(i);

Qt会自动为您转换

答案 2 :(得分:0)

看看QString文档。你有很多:: arg方法重载,它们采用不同的类型。 QString不需要知道%n下的类型,替换%n的方法会知道它并输入正确的值。