当前位置: 代码迷 >> QT开发 >> 如何才能实时的刷新menu的语言类型
  详细解决方案

如何才能实时的刷新menu的语言类型

热度:48   发布时间:2016-04-25 03:23:56.0
怎么才能实时的刷新menu的语言类型?
      我想将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创建一个简单的程序,你应该能发现它默认为你提供了这种东西)
  相关解决方案