之前说过Qt翻译工具----语言家的使用,原以为只要翻译好了把语言包拷贝到板子里就好了,事实证明,我弱爆了.现在对语言翻译做一些补充.
1.qt语言家是对代码中被tr()函数包含起来的字符串进行翻译,首先我要确保我想要翻译的字符串必须是在tr()函数内部.
2.即使翻译了,如果在view显示时没有即使刷新,也可能导致显示出来的语言错误.
我的做法是增加一个 changeEvent()函数:
void TextListSMS::changeEvent(QEvent *e)
{
INFO("[Text]Start:TextListSMS::changeEvent() called")
QWidget::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
updateText();
break;
default:
break;
}
INFO("[Text]End:TextListSMS::changeEvent() called")
}
然后在updateText()函数中再次用tr()设置需要翻译的字符串
3.在view需要显示的时候(eView_active),在this->show();之前调用updateText()进行刷新就可以了.
这种方法是针对用代码实现窗口部件.
另外:如果有些widget用.ui文件实现的话,需要在changeEvent()函数中调用: ui->retranslateUi(this);
并在this->show();之前再次调用进行刷新.
如果两种widget的实现方式都有,那么两种方式都需要调用.