2010-07-09 167 views

回答

495

使用QString::number()

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

下面是一个更有趣的问题:有更快的方法吗?我遇到了一个问题,这个版本几乎比以后的整个处理需要更多的时间... – Zeks 2017-04-04 18:22:38

+0

然后,你可能想要在预先分配的缓冲区上工作......但这听起来像是一个单独的问题。 – 2017-04-06 04:45:39

8

在它最简单的形式,使用乔治Fritzsche也

的回答有点先进的,你可以用这个,

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

获取文档和示例here ..

+0

不幸的是,诺基亚网站的链接不再有效。 – 2016-05-22 16:35:42

96

如果你想把它放在一些文本上下文中,忘记+运算符。 简单地做:

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

既然你提到'+'运算符,注意整数,因为它可能工作得很好,但是在内部,调用'operator +(const QString&s,char c)'实现,并且该字符串不会包含数字的整数, 'QChar :: fromAscii(c)'等效于 – x29a 2015-07-23 08:19:59

+1

由于您提到了+运算符,您可以实际执行此操作,但了解发生了什么:QString p = s + QString :: number(1); 是一个QString完美的作品。所以,基本上QString + QString没问题,QString + int ** bad **。 – 2015-08-12 09:25:46

10

我总是用QString::setNum()

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

setNum()以许多方式被重载。参见QString类参考。

12

另一种选择是使用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()设施模仿空调风格printf()语句,但建议使用QTextStreamarg(),因为他们支持Unicode string秒。

16

此外,要转换任何你想要的,你可以使用QVariant。 对于intQString你:

QVariant(3).toString(); 

一个floatstringstring为float:

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

'QVariant' rulez! – 2017-05-22 22:46:26

+0

叫我疯了,但我会更多地使用问题作为“如何将数字转换为QString?”,这是轻量级转换的主要答案,以及其他特殊处理的答案。 – mr3 2017-07-18 23:47:01

-1

只是为了保持完整性,您可以使用标准库,并做QString qstr = QString::fromStdString(std::to_string(42));