如何将int转换为QString?

时间:2010-07-09 10:31:12

标签: c++ qt type-conversion

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

8 个答案:

答案 0 :(得分:595)

使用QString::number()

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

答案 1 :(得分:111)

如果您想在某些文本上下文中将其放入字符串中,请忘记+运算符。 只需:

// 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);

答案 2 :(得分:21)

此外,要转换您想要的任何内容,您可以使用QVariant。 对于intQString,您可以获得:

QVariant(3).toString();

floatstringstringfloat

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

答案 3 :(得分:15)

另一种选择是使用QTextStream<<运算符的方式与在C ++中使用cout的方式非常相似:

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()语句,但建议使用QTextStream或{{ 1}}因为它们支持Unicode arg() s。

答案 4 :(得分:12)

我总是使用QString::setNum()

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum()在很多方面都被重载了。请参阅QString课程参考。

答案 5 :(得分:11)

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

有点高级,你可以使用它,

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

获取文档和示例here ..

答案 6 :(得分:1)

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

答案 7 :(得分:1)

如果需要区域设置可识别的数字格式,请改用QLocale :: toString。