多言語qt(その場で言語を変更する)に問題があります。私のフォームには、言語が変更されたときに翻訳されるコンボボックスがあります。languageChangedの場合、アプリ呼び出しメソッドretranslateUi()は、コンボボックス内のアイテムを翻訳します。コンボボックスには、信号currentIndexChanged()に対応するスロットがあります。
void on_comboBox_currentIndexChanged(int index)
{
//do something
}
しかし、メソッドretranslateUi()が呼び出されると、次のようになります。
void retranslateUi()
{
ui->comboBox->clear();
ui->comboBox->insertItems(0, QStringList()
<< QApplication::translate("SettingDialog", "English", 0, QApplication::UnicodeUTF8)
<< QApplication::translate("SettingDialog", "French", 0, QApplication::UnicodeUTF8)
);
}
問題は次のとおりです。retranslateUi()の各ステートメントは、信号currentIndexChanged()を発行し、その後、スロットが再度呼び出します。
どうすればそれを回避できますか?