343 votes

Comment convertir un int en QString ?

Existe-t-il un QString qui prend un int et le restitue sous la forme d'un QString ?

622voto

Georg Fritzsche Points 59185

Utilice QString::number() :

int i = 42;
QString s = QString::number(i);

116voto

Kamil Klimek Points 7268

Et si vous voulez l'insérer dans une chaîne de caractères dans un contexte textuel, oubliez l'option + opérateur. Il suffit de faire :

// 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);

17voto

Matthew Kraus Points 146

Une autre option consiste à utiliser QTextStream et le << de la même manière que vous utiliseriez l'opérateur cout en C++ :

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

Parce que l'opérateur <<() a été surchargé, vous pouvez l'utiliser pour plusieurs types, et pas seulement pour le type int . QString::arg() est surchargé, par exemple arg(int a1, int a2) mais il n'y a pas de arg(int a1, QString a2) , de sorte que l'utilisation de QTextStream() et l'opérateur << est pratique pour formater des chaînes de caractères plus longues avec des types mixtes.

Attention : Vous pourriez être tenté d'utiliser la fonction sprintf() possibilité d'imiter le style C printf() mais il est recommandé d'utiliser les déclarations QTextStream o arg() parce qu'ils supportent l'Unicode string s.

14voto

Narek Points 7815

J'utilise toujours QString::setNum() .

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum() est surchargé à bien des égards. Voir QString référence de classe.

12voto

liaK Points 6045

Dans sa forme la plus simple, utilisez la réponse de Georg Fritzsche

Pour les plus avancés, vous pouvez utiliser ceci,

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

Obtenir la documentation et un exemple aquí ..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X