我想将menu的显示分为英文显示和中午显示,根据qt自带的translate例子,生成了qm翻译文件,在menubar中加入一项LanguageMenu,用户可以单击”English“或”中文简体“俩个选项来切换语言种类,但是现在点击”中午简体“选项无法将英文显示的menu转化为中文,请教下各位,这个能否实现?如果可以该如何实现?
我现在的做法是,当用户点击”中文简体“时,跳入slots函数chooseLanguage(),在函数中使用
QTranslator.load(qm文件),然后qApp->installTranslator(translator),但是没有任何变化。
------解决方案--------------------
Qt中的多语言翻译是通过tr() 实现的,它只是一个简单的函数,不像你想象的那么智能。
比如:QMenu::setTitle() 用于设置菜单头。你必须在加载完新的qm文件之后,手动调用一次 setTitle(tr("xxxxx")) 来刷新显示
由于每次qm改变时,Qt会向每个widget派发 QEvent::LanguageChange 事件,故尔你也可以在事件处理函数中 进行这种赋值操作。(用Qt Creator创建一个简单的程序,你应该能发现它默认为你提供了这种东西)