Answers:
int i = 42;
QString s = QString::number(i);
而且,如果您想将其放入某些文本上下文中的字符串中,请忽略+
运算符。只需做:
// 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);
+
运算符,请注意整数,因为它可能很好用,但是在内部,将operator+(const QString &s, char c)
调用实现,并且字符串将不包含整数作为数字,但QChar::fromAscii(c)
等效字符串
此外,要转换任何内容,可以使用QVariant
。对于int
一个QString
你会得到:
QVariant(3).toString();
A float
到a string
或a string
到a float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
QVariant
规则!
另一个选择是使用QTextStream和<<
运算符,其方式与cout
在C ++中使用的方式几乎相同:
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()
and运算符<<
很方便。
警告:您可能会想使用该sprintf()
工具来模仿C样式printf()
语句,但建议使用QTextStream
或arg()
因为它们支持Unicode string
。
以最简单的形式,使用格奥尔格·弗里茨切(Georg Fritzsche)的答案
稍微先进一点,您可以使用它,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
在这里获取文档和示例。