是否有QString
函数接受 int 并将其输出为QString
?
答案 0 :(得分:595)
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
。
对于int
到QString
,您可以获得:
QVariant(3).toString();
float
到string
或string
到float
:
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).
由于运算符<<()
已经过载,您可以将其用于多种类型,而不仅仅是int
。 QString::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。