web-dev-qa-db-fra.com

Comment convertir int en QString?

Existe-t-il une fonction QString qui prend un int et le sort en tant que QString?

330
Ahmad

Utilisez QString::number() :

int i = 42;
QString s = QString::number(i);
606
Georg Fritzsche

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);
113
Kamil Klimek

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();
22

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 strings.

16
Matthew Kraus

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.

13
Narek

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 ..

12
liaK

Juste pour être complet, vous pouvez utiliser la bibliothèque standard et faire QString qstr = QString::fromStdString(std::to_string(42));

2
Morgan

Si vous avez besoin d'un formatage numérique prenant en compte les paramètres régionaux, utilisez plutôt QLocale :: toString.

2
André