Je veux "stringifier" un nombre et ajouter des zéros, comme par exemple comment printf("%05d")
ajouterait des zéros non significatifs si le nombre est inférieur à 5 chiffres.
Utilisez ceci:
QString number = QString("%1").arg(yourNumber, 5, 10, QChar('0'));
5 correspond ici à 5 dans printf("%05d")
. 10 est la base, vous pouvez mettre 16 pour imprimer le nombre en hexadécimal.
QString QString :: rightJustified (int width, QChar fill = QLatin1Char (''), bool truncate = false) const
int myNumber = 99;
QString result;
result = QString::number(myNumber).rightJustified(5, '0');
le résultat est maintenant 00099
Le court exemple:
int myNumber = 9;
//Arg1: the number
//Arg2: how many 0 you want?
//Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10)
// It seems like only decimal can support negative numbers.
QString number = QString("%1").arg(myNumber, 2, 10, QChar('0'));
Output will be: 09
Essayer:
QString s = s.sprintf("%08X",yournumber);
EDIT: Selon la documentation à http://qt-project.org/doc/qt-4.8/qstring.html#sprintf :
Warning : Nous déconseillons d'utiliser QString :: sprintf () dans le nouveau code Qt. Au lieu de cela, envisagez d'utiliser QTextStream ou arg (), qui prennent tous deux en charge les chaînes Unicode de manière transparente et respectent le type. Voici un exemple qui utilise QTextStream:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
Lisez les autres documents pour connaître les fonctionnalités manquantes de cette méthode.