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) :
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)
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); }
Quelqu'un connaît-il une façon de régler mon problème ?
Merci pour vos réponses !
Partager