我遇到了多语言 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(),然后插槽会再次调用。
我怎样才能避免这种情况?