IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Affichage de nombres négatifs dans QLabel


Sujet :

Qt

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Affichage de nombres négatifs dans QLabel
    Lorsque je fais afficher un nombre négatif dans un QLabel, le signe moins (-) est reporté à la fin du nombre. J'ai essayé beaucoup de choses comme l'utilisation de setText en ajoutant un espace devant le nombre. Le signe moins est toujours reporté à la fin. J'ai également changé le formatage, en LogText, PlainText ou RichText sans succès.

    Le problème peut être reproduit avec l'instruction suivante:
    myLabel->setText( "-154.22" );
    L'utilisation de setNum produit le même résultat.

    Comment faire sorte que les nombres négatifs s'affichent avec le signe moins devant le nombre ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    salut, heu bizarre ton problème si tu utilises SetText() ton nombre n'est plus considéré comme un réel mais comme du texte et donc il n'y a aucune raison pour que le moins se retrouve à la fin ?!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Oui, c'est bizarre. La seule explication serait qu'il y a un filtre qui assure une conversion des nombres dans les représentations locales. Mais le - à la fin est une représentation plutôt particulière.

    Quelqu'un parvient-il à reproduire ce comportement ou est ce un problème local ? Comment changer/contourner cet effet ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    J'ai finalement trouvé la solution après plusieurs essais.
    Il y a visiblement une feature non documentée.
    A gauche le paramètre, à droite ce qui est affiché

    "-123.45" -> "123.45-"
    " -123.45 " -> "123.45-"
    "'' -123.45 '" -> "'123.45- ''" : notez le double simple quote à gauche est permuté avec le simple quote de la fin !
    "- 123.45" -> "123.45 45#&" : J'ai écrit 45#& à l'envers PHPBB le remplace par -. En tout cas c'est inversé ?!
    "bla-123.45" -> "bla-123.45"
    "123.45-toto" -> "toto-123.45" : ce n'est pas drôle...
    "1 4 5 -023.45" -> "023.45- 5 4 1" : Polonais ?!

    "123.45-" -> "-123.45" : Finalement la solution....

    Changer le format de texte du label de autoText en logText ou plainText n'y change rien.

    Apparemment si la chaine commence par un chiffre, l'ordre des token est inversé. Le - est un token comme un autre.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Personnellement quand je lance le programme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <QApplication>
    #include <QLabel>
     
    int main(int argc, char** argv)
    {
      QApplication app(argc, argv);
      QLabel label("-154.22");
      label.show();
      return app.exec();
    }
    ça m'affiche le signe moins au début comme attendu.
    Et si je met à la fin, et bien ça me l'affiche à la fin

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut

    tu peut tester le code que t'as fournie estofilo ?

    ou montrer un peut de code?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Oops. Merci de la suggestion du test. J'aurais dû commencer par là.

    J'ai pu comprendre la cause du problème et la façon de faire les choses correctement.

    J'ai créé un nouveau projet en ajoutant un QLabel dans la fenêtre Qt4 sans changer aucun paramètre. Et la tout s'affiche correctement.
    J'ai alors regardé les propriétés que j'ai modifié dans mon programme et il n'y en avait qu'une seule: LayoutDirection que j'avais positionné de droite à gauche alors que le défaut est de gauche à droite.

    En fait c'est la propriété alignement, spécifique à QLabel, que j'aurais du changer pour obtenir un alignement à droite. C'est corrigé.

    Donc le layoutDirection de droite à gauche d'un QLabel permute l'ordre des token qu'il contient.

    Merci de votre aide à résoudre ce mystère.

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ChMeessen Voir le message
    En fait c'est la propriété alignement, spécifique à QLabel, que j'aurais du changer pour obtenir un alignement à droite. C'est corrigé.
    intéressant, je ne connaissait pas.

    n'oublie pas de mettre en

  9. #9
    Membre confirmé

    Inscrit en
    Décembre 2009
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 164
    Points : 490
    Points
    490
    Par défaut
    Sinon tu peux faire : label->setText(QString::number(ton_nombre));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nombre négatif dans un IF
    Par DoumCSS dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2013, 21h49
  2. Nombre négatif dans Textbox
    Par manouk dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/02/2010, 11h57
  3. Problème d'affichage d'une image dans QLabel
    Par H0rnet dans le forum Qt
    Réponses: 4
    Dernier message: 28/02/2009, 00h18
  4. Affichage d'un nombre négatif
    Par looping dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2008, 08h48
  5. Problème de tri de nombre négatif dans un état
    Par loutsky dans le forum Access
    Réponses: 11
    Dernier message: 21/04/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo