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 !