Re:Qt动态翻译,在其他成员函数当中,如果有label->setText(tr("共%1页").arg(m_iPage))的 ..
//我终于自己研究出来了,
//原来动态注册的翻译器,是在一个函数里面构造的,如下
void MyWidget::LanguageChanged(int _iLanguage)
{
QTranslator translator;
if(0 == _iLanguage)
{
translator.load("english.qm");
}
else
{
translator.load("chinese.qm");
}
app.installTranslator(&translator);
}
这样子构造的translator是局部的,函数结束之后,就销毁了,所以在其他函数里面对label设置text属性的时候就无法完成想要的英文效果了,修改方法,用new的就可以了,这样可以保证在注册完翻译器之后,下次重新注册之前,的任何地方,都可以调用setText等方法,都会进行翻译操作的,另外一个label有两种文本的可以这样子做:
label->setText(tr("局部的","first"));
label->setText(tr("函数结束","second"));
这样Qt linguist会两个都提取,对两个分别翻译自己想要的内容就ok了,第二个参数可以随便写,只要不相同就可以了,意思是用来区分label的内容的!
靠!!为什么点了空格,就发布出去了!!!