¿Cómo convertir int a QString?

3 minutos de lectura

avatar de usuario
Ahmad

Hay un QString función que toma un En t y lo emite como un QString?

avatar de usuario
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

avatar de usuario
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, el operator+(const QString &s, char c) se llama a la implementación, y la cadena no contendrá el número entero como número, pero su QChar::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

avatar de usuario
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

avatar de usuario
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 strings.

avatar de usuario
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.

avatar de usuario
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í..

avatar de usuario
André

Si necesita un formato de número compatible con la configuración regional, use QLocale::toString en su lugar.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad