Existe-t-il une fonction QString
qui prend un int et le sort en tant que QString
?
Utilisez 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);
De plus, pour convertir ce que vous voulez, vous pouvez utiliser QVariant
. Pour un int
à un QString
, vous obtenez:
QVariant(3).toString();
Un float
à un string
ou un string
à un float
:
QVariant(3.2).toString();
QVariant("5.2").toFloat();
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).
Étant donné que l'opérateur <<()
a été surchargé, vous pouvez l'utiliser pour plusieurs types, pas uniquement int
. QString::arg()
est surchargé, par exemple arg(int a1, int a2)
, mais il n'y a pas de arg(int a1, QString a2)
. Il est donc pratique d'utiliser QTextStream()
et l'opérateur <<
pour formater des chaînes plus longues avec des types mélangés.
Attention: Vous pourriez être tenté d'utiliser la fonction sprintf()
pour imiter les instructions de style C printf()
, mais il est recommandé d'utiliser QTextStream
ou arg()
parce qu'ils prennent en charge Unicode string
s.
J'utilise toujours QString::setNum()
.
int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);
setNum()
est surchargé de nombreuses manières. Voir QString
référence de classe.
Dans sa forme la plus simple, utilisez la réponse de Georg Fritzsche
Pour un peu avancé, vous pouvez utiliser ceci,
QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const
Obtenez la documentation et un exemple ici ..
Juste pour être complet, vous pouvez utiliser la bibliothèque standard et faire QString qstr = QString::fromStdString(std::to_string(42));
Si vous avez besoin d'un formatage numérique prenant en compte les paramètres régionaux, utilisez plutôt QLocale :: toString.