如何将int转换为QString?

Ahm*_*mad 343 c++ qt type-conversion

是否有一个QString函数接受一个int并将其输出为QString

Geo*_*che 622

用途QString::number():

int i = 42;
QString s = QString::number(i);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更有趣的问题:有没有更快的方法?我遇到了一个问题,即此版本之后几乎比整个处理花费更多的时间... (2认同)

Kam*_*mek 116

如果你想在某些文本上下文中将它放入字符串中,请忘记+运算符.简单地说:

// Qt 5 + C++11
auto i = 13;    
auto printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 5
int i = 13;    
QString printable = QStringLiteral("My magic number is %1. That's all!").arg(i);

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);
Run Code Online (Sandbox Code Playgroud)

  • 既然你提到了 `+` 运算符,请小心整数,因为它可能很好地工作,但在内部,调用了 `operator+(const QString &s, char c)` 实现,并且字符串不会包含整数作为数字,但它的 ` QChar::fromAscii(c)` 等效 (3认同)
  • 既然你提到了+运算符,你实际上可以做到,但是要了解发生了什么:QString p = s + QString :: number(1); 是一个QString完美的工作.所以,基本上QString + QString没问题,QString + int**不好**. (2认同)

Gab*_*ard 25

此外,要转换你想要的任何东西,你可以使用QVariant.对于一个intQString你:

QVariant(3).toString();
Run Code Online (Sandbox Code Playgroud)

A float到a stringstringa float:

QVariant(3.2).toString();
QVariant("5.2").toFloat();
Run Code Online (Sandbox Code Playgroud)


Mat*_*aus 17

另一种选择是使用QTextStream<<运算符,就像cout在C++中使用的一样:

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).
Run Code Online (Sandbox Code Playgroud)

因为运算符<<()已经过载,所以可以将它用于多种类型,而不仅仅是int.QString::arg()例如arg(int a1, int a2),重载,但没有arg(int a1, QString a2),因此在格式化具有混合类型的较长字符串时,使用QTextStream()和运算符<<很方便.

警告:您可能很想使用该sprintf()工具来模仿C样式printf()语句,但建议使用QTextStreamarg()因为它们支持Unicode string.


Nar*_*rek 14

我总是用QString::setNum().

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
Run Code Online (Sandbox Code Playgroud)

setNum()在很多方面都超载了.见QString课程参考.


lia*_*iaK 12

在它最简单的形式,使用Georg Fritzsche的答案

有点高级,你可以使用这个,

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Run Code Online (Sandbox Code Playgroud)

这里获取文档和示例..


And*_*dré 5

如果您需要区域设置感知的数字格式,请QLocale::toString改用。