Hay un QString
función que toma un En t y lo emite como un QString
?
¿Cómo convertir int a QString?
Ahmad
Jorge Fritzsche
Usar QString::number()
:
int i = 42;
QString s = QString::number(i);
-
Aquí está la pregunta más interesante: ¿hay una manera más rápida? Me encontré con un problema en el que esta versión casi toma más tiempo que todo el procesamiento posterior…
– Zeks
4 de abril de 2017 a las 18:22
-
Entonces probablemente desee trabajar en búferes preasignados… pero esto suena como una pregunta aparte.
-Georg Fritzsche
6 de abril de 2017 a las 4:45
kamil klimek
Y si quieres ponerlo en una cadena dentro de algún contexto de texto, olvídate de +
operador. Simplemente haz:
// 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);
-
Ya que mencionas la
+
operador, tenga cuidado con los números enteros, ya que podría funcionar muy bien, pero internamente, eloperator+(const QString &s, char c)
se llama a la implementación, y la cadena no contendrá el número entero como número, pero suQChar::fromAscii(c)
equivalente– x29a
23 de julio de 2015 a las 8:19
-
Ya que mencionas el operador +, en realidad puedes hacerlo, pero entendiendo lo que sucede: QString p = s + QString::number(1); ser un QString funciona perfectamente. Entonces, básicamente QString + QString está bien, QString + int malo.
–David Sanchez
12 de agosto de 2015 a las 9:25
Gabriel de Grimouard
Además, para convertir lo que quieras, puedes usar QVariant
. Por un int
a un QString
usted obtiene:
QVariant(3).toString();
A float
a un string
o un string
a un float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
-
Llámame loco, pero obtendría más uso de la pregunta como “¿Cómo convertir un número a QString?”, Esta es la respuesta principal para conversiones livianas y las otras respuestas para tratamientos especiales.
– mr3
18 de julio de 2017 a las 23:47
mateo kraus
Otra opción más es utilizar QTextStream y el <<
operador de la misma manera que usaría cout
en C++:
QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";
// OUTPUT:
// Mouse click: (5, 1).
Porque operador <<()
se ha sobrecargado, puede usarlo para múltiples tipos, no solo int
. QString::arg()
está sobrecargado, por ejemplo arg(int a1, int a2)
pero no hay arg(int a1, QString a2)
por lo que usando QTextStream()
y operador <<
es conveniente al formatear cadenas más largas con tipos mixtos.
Precaución: Es posible que sienta la tentación de utilizar el sprintf()
facilidad para imitar el estilo C printf()
declaraciones, pero se recomienda utilizar QTextStream
o arg()
porque son compatibles con Unicode string
s.
Narek
siempre uso QString::setNum()
.
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
setNum()
está sobrecargado de muchas maneras. Ver QString
referencia de clase.
Mándame
En su forma más simple, use la respuesta de Jorge Fritzsche
Para un poco avanzado, puedes usar esto,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Obtenga la documentación y un ejemplo aquí..
André
Si necesita un formato de número compatible con la configuración regional, use QLocale::toString en su lugar.