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 :

Traduction dynamique sur plusieurs fenêtres


Sujet :

Qt

  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Par défaut Traduction dynamique sur plusieurs fenêtres
    Bonjour tous le monde !

    Je développe en ce moment une application Qt avec Qt Creator devant implémenter la traduction dynamique.
    J'ai déjà pu bien avancer grâce à ce forum, mais la traduction ne fonctionne que pour l'une de mes trois fenêtres ouvertes (celle dans laquelle l'utilisateur peut définir la langue, justement)

    Voici le procédé : la fenêtre permettant le choix de la langue charge et installe un QTranslator, puis se "re-traduit" (ui->retranslateUi(this)). Lors de l'installation, un QEvent::languageChange est propagé.

    Le problème : les deux autres fenêtres ouvertes "voient" le QEvent, grâce à ma redéfinition de changeEvent(QEvent *event). Dans cette méthode, j'exécute alors le "ui->retranslateUi(this)". Hélas ceci ne fonctionne pas !

    Voici le code de la fenêtre de choix de la langue (qui fonctionne) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    void QDgInstallation::on_butOK_pressed()
    {
        QString lang = ui->cbxLang->currentText();
        QEvent *translate = new QEvent(QEvent::LanguageChange);
     
        changeEvent(translate, &lang);
    }
     
    void QDgInstallation::changeEvent(QEvent *event, QString *lang) {
        if (event->type() == QEvent::LanguageChange)
            changeLang(lang);
     
        QWidget::changeEvent(event);
    }
     
    void QDgInstallation::changeLang(QString *lang) {
     
        QTranslator translator;
     
        lang->resize(2);
        *lang = lang->toLower();
        lang->prepend("GUI_");
        translator.load(*lang);
        qApp->installTranslator(&translator);
        ui->retranslateUi(this);
    }
    J'ai pensé à ré-installer le QTranslator avant chaque "retranslateUi()" mais cette installation re-propage un QEvent, ce qui re-appelle "changeEvent()", etc... (boucle infinie)

    Quelqu'un connaît-il une façon de régler mon problème ?

    Merci pour vos réponses !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je ne m'y connait pas vraiment en traduction dynamique, mais peut être que cela pourra vous aider: http://qt-quarterly.developpez.com/q...ion-dynamique/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 17
    Par défaut
    J'ai trouvé mon erreur : il faut déclarer le QTranslator globalement, de façon à ce qu'il "existe" toujours lorsque les autres classes appliquent le "retranslateUi()" !

    Merci et bonne suite !

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

Discussions similaires

  1. Formulaire dynamique sur plusieurs pages
    Par LuffyyffuL dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/11/2013, 14h01
  2. Travail sur plusieurs fenêtres, difficultés
    Par Virthuss dans le forum C++
    Réponses: 3
    Dernier message: 20/03/2013, 15h49
  3. Réponses: 0
    Dernier message: 09/04/2012, 19h43
  4. Comment récupéré les données sur plusieurs fenêtres ?
    Par bon4000 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/09/2007, 17h58
  5. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55

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