问题遇到的现象和发生背景
使用Qt进行国际化的时候,只有主界面动态更改了语言,其它界面的语言没有改变
运行结果
只有主界面动态更改了语言,其它界面的语言没有改变
我的解答思路和尝试过的方法
Qt信号槽、extern全局变量,在每个界面的.cpp底下根据条件判断再install一遍.qm文件,但感觉太复杂了,每增加一个界面就又要重新写一遍
我想要达到的结果
主界面选择语言后,其它界面的语言跟着改变,但是只install一次.qm文件
使用Qt进行国际化的时候,只有主界面动态更改了语言,其它界面的语言没有改变
只有主界面动态更改了语言,其它界面的语言没有改变
Qt信号槽、extern全局变量,在每个界面的.cpp底下根据条件判断再install一遍.qm文件,但感觉太复杂了,每增加一个界面就又要重新写一遍
主界面选择语言后,其它界面的语言跟着改变,但是只install一次.qm文件
如果需要动态翻译的话,qm只需要安装一次,然后在语言发生改变时,需要给每一个控件重新调用一次setText设置文本,
具体做法可以在根界面调用所有子界面的Translate函数,语言发生改变的时候,调用一次根界面的Translate函数就可以了
需要在每个界面类都写一个Translate函数
例如
void CGeneralSettingsView::Translate()
{
ui.m_saveBtn->setText(tr("Save"));
ui.m_languageLabel->setText(tr("Language"));
ui.m_timezoneLabel->setText(tr("Time Zone"));
ui.m_dateLabel->setText(tr("Date"));
ui.m_timeLabel->setText(tr("Time"));
}
如有帮助,请采纳