Respuestas:
Uso QString::number():
int i = 42;
QString s = QString::number(i);
Y si desea ponerlo en cadena dentro de algún contexto de texto, olvídese del +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);
+operador, tenga cuidado con los enteros, ya que podría funcionar bien pero internamente, operator+(const QString &s, char c)se llama a la implementación y la cadena no contendrá el entero como número, sino su QChar::fromAscii(c)equivalente
Además para convertir lo que quieras, puedes usarlo QVariant. Para un inta a QStringobtienes:
QVariant(3).toString();
A floata a stringo stringa a float:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
QVariantrulez!
Otra opción es usar QTextStream y el <<operador de la misma manera que lo haría couten C ++:
QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";
// OUTPUT:
// Mouse click: (5, 1).
Debido a que el operador <<()se ha sobrecargado, puede usarlo para varios tipos, no solo int. QString::arg()está sobrecargado, por ejemplo arg(int a1, int a2), pero no lo hay arg(int a1, QString a2), por lo que usar QTextStream()y operator <<es conveniente al formatear cadenas más largas con tipos mixtos.
Precaución: es posible que sienta la tentación de utilizar la función sprintf()para imitar las printf()declaraciones de estilo C , pero se recomienda usarlas QTextStreamo arg()porque son compatibles con Unicode string.
En su forma más simple, use la respuesta de Georg 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í .