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

Discussion :

QLocale et la fonction POSIX setlocale(LC_NUMERIC,"C")

  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut QLocale et la fonction POSIX setlocale(LC_NUMERIC,"C")
    Bonjour,

    Je voudrais que mes applis trravaillent systématiquement avec le '.' comme séparateur décimal.

    Au départ juste aprés l'intialisation de QApplication je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setlocale(LC_NUMERIC,"C");
    Et là tout fonctionne, seulement certaines de mes applis, sans que je ne sache pourquoi se retrouve des certains widget utilisant '.' et d'autres la ','.
    Ne comprennant pas la raison et aprés quelques recherches, finalement je rajoute les lignes suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QLocale us(QLocale::English,QLocale::UnitedStates);
    QLocale::setDefault(us);
    Là toutes mes applis fonctionnent sauf que et là c'est aussi pour toutes mes application utilisant Qwt, les echelles des graphses utilisent systématiquement la ',' J'ai bien essayé de mettre ces lignes dans le constructeur de mes graphes, sans succés.
    Je ne comprend pas trop ce qui se passe et en réalité j'ai du mal à saisir la différence exact entre la class Qlocal et la fonction POSX setlocale(...)

    Merci d'avance de vos lumiére

  2. #2
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Ok, au cas ou d'autre programmeur se demanderai la même chose, j'ai finalement eu une explication trés claire :

    Citation Envoyé par alexisdm
    setlocale, c'est pour fixer la locale des fonctions C et C++ (ex: iostream, printf...).
    QLocale c'est uniquement pour tout ce qui est utilisé par Qt.

    Toutes les valeurs affichées par Qwt passent par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    QwtText QwtAbstractScaleDraw::label( double value ) const  
    {  
        return QLocale().toString( value );  
    }
    mais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QLocale::setDefault(QLocale::c());  
    qDebug() << "QLocale direct" << QLocale().toString(10.5);  
    qDebug() << "QLocale QwtAbstractScaleDraw::label" << plot->axisScaleDraw(QwtPlot::yLeft)->label(10.5).text();
    affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QLocale direct "10.5"   
    QLocale QwtAbstractScaleDraw::label "10,5"
    Je crois que les membres statiques de QLocale sont dupliqués quand Qwt charge le dll de QtCore, mais ça ne paraît pas très logique...


    Donc tu vas devoir utiliser setAxisScaleDraw pour redéfinir la méthode virtuelle label.

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

Discussions similaires

  1. Pourquoi utiliser les fonctions POSIX ?
    Par sportBlond dans le forum Langage
    Réponses: 5
    Dernier message: 04/09/2006, 17h11

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