Réponses:
Utilisation QString::number()
:
int i = 42;
QString s = QString::number(i);
Et si vous voulez le mettre en chaîne dans un contexte de texte, oubliez l' +
opérateur. Faites simplement:
// 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);
+
opérateur, faites attention aux entiers, car cela pourrait très bien fonctionner mais en interne, l' operator+(const QString &s, char c)
implémentation est appelée, et la chaîne ne contiendra pas l'entier sous forme de nombre mais son QChar::fromAscii(c)
équivalent
De plus, pour convertir ce que vous voulez, vous pouvez l'utiliser QVariant
. Pour un int
à un, QString
vous obtenez:
QVariant(3).toString();
A float
vers a string
ou a string
vers a float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
QVariant
rulez!
Encore une autre option consiste à utiliser QTextStream et l' <<
opérateur de la même manière que vous utiliseriez cout
en C ++:
QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";
// OUTPUT:
// Mouse click: (5, 1).
L'opérateur <<()
étant surchargé, vous pouvez l'utiliser pour plusieurs types, pas seulement int
. QString::arg()
est surchargé, par exemple arg(int a1, int a2)
, mais il n'y en a pas arg(int a1, QString a2)
, donc l' QTextStream()
opérateur et l'opérateur <<
sont pratiques lors du formatage de chaînes plus longues avec des types mixtes.
Attention: Vous pourriez être tenté d'utiliser la fonction sprintf()
pour imiter des printf()
instructions de style C , mais il est recommandé d'utiliser QTextStream
ou arg()
parce qu'elles prennent en charge les Unicode string
.
Dans sa forme la plus simple, utilisez la réponse de Georg Fritzsche
Pour un peu avancé, vous pouvez l'utiliser,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Obtenez la documentation et un exemple ici ..