Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.8.0 - Qt Creator : 4.2.2 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

Utilisation de arg() pour les QString

Bonjour à tous,

Je dois rajouter des blancs par la gauche (left pad) à une chaine (QString), mais je ne sais pas comment.

QString Chaine = "123456";
Je voudrais padder cette chaine en fonction de d'une variable Taille
QString("%1 23456).arg("",Taille); comme ça marche, mais si la chaine est passée est une variable:
QString a = MaClasse.Nom();
a.arg("",Taille); ne marche pas
Merci pour votre aide.

Réponses

  • arg() ne modifie pas la chaîne instanciée, mais renvoie la valeur correspondante.
    Pour obtenir ton résultat, il faut donc :
    a = a.arg("", Taille");
  • J'ai essayé l'xemple suivant mais ça ne fait rien.
    QString a = "123456";
    a = a.arg("",10);
    Quand je regarde le résultat, la valeur de a est toujours "123456".
  • C'est normal, tu as écrit
    QString a = "123456";
    Si tu veux qu'arg() fasse effet, il faut au moins avoir :
    QString a = "%1 123456";
    a = a.arg("", 10);
  • mais si je ne connais pas le contenu de la chaine au début
    QString Nom = Table.Nom();
    Nom.arg("",Taille);
    Là ça ne marche pas.
    C'est un petit peu trouver le même rôle que Format dans les CString(MFC)
    Merci
  • December 2007 modifié
    Il faut que ta chaine contienne %1 si tu veux utiliser arg :
    QString::arg doc said:
    This function returns a copy of this string where a replaces the lowest numbered occurrence of %1, %2, ..., %99.
    En revanche, tu peux utiliser la méthode rightJustified qui parait bien appropriée à ce que tu souhaite faire :
    QString a = "123456";
    a = a.rightJustified (3, ' '); // a == " 123456"
  • Merci pour votre aide.
  • Ya pas de quoi.
    Pense à mettre résolu ;)
  • Pour la petit anecdote, voilà comme on aurait pu faire avec arg() :
    QString args = "%2 %1";
    QString result = a.arg(Table.Nom()).arg("", Taille);
    Je marque en résolu.
Connectez-vous ou Inscrivez-vous pour répondre.