Qt实现软件界面显示不同的语言,是通过加载字库文件实现的,因此有三个对应的问题需要解决:
创建Qt应用程序后,
-
在.pro文件中添加一行代码:
TRANSLATIONS += qmain_zh.ts
2. 使用QtCreator菜单中的【工具】->外部->Qt语言专家->更新翻译
则会自动生成.ts文件,使用Qt Linguist语言家软件打开.ts文件,编辑语言的翻译;
如果是在代码中动态设置的文字,在需要被翻译的字符串前面添加标识tr,比如:
QString str = tr("Hello world!");
这样翻译工具就会根据这个tr标记去提取字符串,然后进行翻译;
如果是在界面中直接添加的文字,则会自动被tr,这样在使用Qt的语言工具进行编辑时,也可以找到对应的文字,如下:
在代码中的动态文本进行翻译
在UI设计器界面上添加的文本
本示例设计的界面如下:
给两个按钮分别添加槽函数如下:
void MainWindow::useChineseSlot()
{
if(translator.load("C:\\Users\\zhaoliang\\Documents\\untitled1\\qmain_zh","."))
{
qApp->installTranslator(&translator);
}
}
void MainWindow::useEnglishSlot()
{
qApp->removeTranslator(&translator);
}
translator是QTranslator类型的私有成员
重新实现protected方法changeEvent(QEvent *event)
void MainWindow::changeEvent(QEvent *event)
{
QWidget::changeEvent(event);
switch(event->type())
{
case QEvent::LanguageChange:
{
ui->retranslateUi(this);
ui->label1->setText(tr("this is a dynamic text"));
}
break;
default:
break;
}
}
代码运行效果:
代码获取请关注微信公众号获取: