关于c ++:如何将int转换为QString?

How to convert int to QString?

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


使用QString::number()

1
2
int i = 42;
QString s = QString::number(i);


如果你想把它放到一些文本上下文中的字符串中,那就不要考虑+操作符了。简单地做:

1
2
3
4
5
6
7
8
9
10
11
// 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);


此外,要转换任何您想要的,您可以使用QVariant。对于一个int到一个QString你得到:

1
QVariant(3).toString();

一个float到一个string或一个string到一个float

1
2
QVariant(3.2).toString();
QVariant("5.2").toFloat();


还有一种选择是使用QtTraseFrand和EDCOX1的5×操作符,其方式与使用C++中的EDCOX1(6)一样大。

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

// OUTPUT:
// Mouse click: (5, 1).

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

注意:您可能会尝试使用sprintf()工具来模拟C样式的printf()语句,但建议使用QTextStreamarg(),因为它们支持unicode string


我总是用QString::setNum()

1
2
3
4
5
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()在许多方面超载。参见QString类参考。


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

稍微高级一点,你可以用这个,

1
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

在这里获取文档和示例。


如果需要区分区域设置的数字格式,请改用qlocale::toString。


为了完整起见,您可以使用标准库并执行QString qstr = QString::fromStdString(std::to_string(42));