有没有一个 QString
函数可以将 int 转化为 QString
输出?
使用QString::number()
函数:
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)
。 - x29aQVariant
来转换您想要的任何内容。将int
转换为QString
,您会得到:QVariant(3).toString();
将 float
转换为 string
或将 string
转换为 float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
另一个选项是使用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()
和运算符<<
非常方便。
注意: 您可能会 VersVers 使用sprintf()
来模仿C风格的printf()
语句,但建议使用QTextStream
或arg()
,因为它们支持Unicode string
s。
我通常使用QString::setNum()
。
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
setNum()
在许多方面被重载。请参阅QString
类的参考文献。
除了 Georg Fritzsche 的回答,还有一种更高级的方法:
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));
QLocale有一种方便的数字转换方法。虽然比接受的答案多打了一些字,但对于浮点数来说更加有用。因此我喜欢用这种方式来完成转换。下面是一个整数的示例:
int i = 42;
QString s = QLocale().toString(i);
这里是关于浮点数的:
float f=42.5;
QString s = QLocale().toString(f, 1);
<QCoreApplication>
这样的东西中,因此您当然需要在某个地方进行#include <QLocale>
。它真正发挥作用的是在格式化货币字符串方面。QString s = QString::number(42.5, 'f', 1);
但是根据帮助文档所述,“与QLocale::toString()不同,此函数不遵循用户的语言环境设置。”