实现多国语言切换的方法:

首先点击菜单 QT5 --> Create new Translation File,需要注意的是必须要选中工程的任何一个地方(即左边 Solution 中树形结构的工程位置),否则菜单是灰色不能点击状态的。

qt开发入门简介 一步一步学习Qt开发(1)

qt开发入门简介 一步一步学习Qt开发(2)

qt开发入门简介 一步一步学习Qt开发(3)

我们创建两个翻译文件:

如果只需要中文的话,只需要创建 helloworld_zh.ts 即可。

qt开发入门简介 一步一步学习Qt开发(4)

大分辨率的图片会被头条降低质量,如果看不清楚的话,以下是分别截取的两个小图片:

qt开发入门简介 一步一步学习Qt开发(5)

qt开发入门简介 一步一步学习Qt开发(6)

保存并关闭 UI 设计师,回到工程,我们分别右键两个翻译文件,点击“lupdate”:

qt开发入门简介 一步一步学习Qt开发(7)

双击 helloworld_en.ts 或 helloworld_zh.ts,默认会调用 Qt 语言家打开相应文件:

qt开发入门简介 一步一步学习Qt开发(8)

在 1 的地方输入译文,点击 2 表示完成翻译,最后不要忘记点击“保存”。我只对标题 HelloWorld 作了中英文区别翻译,英文是:Hello World,中文是:你好 世界,而按钮 Chinese 与 English 无论是英文翻译包还是中文翻译包,都分别是:“中文”与“English”。保存退出后,还需要分别对两个翻译源文件调用“lrelease”:

qt开发入门简介 一步一步学习Qt开发(9)

调用 lrelease 后,会对 *.ts 文件翻译为相应的 Qt 翻译文件格式 *.qm:

qt开发入门简介 一步一步学习Qt开发(10)

我们可以使用记事本等文本文件打开 *.ts 文件,实际上它是 XML 文件:

qt开发入门简介 一步一步学习Qt开发(11)

下面我们先来实现程序启动的时候默认是中文的,main 函数修改成:

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));

QApplication a(argc, argv);

QTranslator* translator = new QTranslator();

translator->load("helloworld_zh.qm");

a.installTranslator(translator);

HelloWorld w;

w.show();

return a.exec();

需要 include 两个头文件:

#include <QTextCodec>

#include <QTranslator>

编译运行:

qt开发入门简介 一步一步学习Qt开发(12)

我们需要实现的是点击按钮动态切换语言,“点击事件”涉及到一个很重要的功能:“信号/槽”,我们将在下一篇文章介绍,现在一起来实现鼠标点击事件,如果暂时不理解代码,欢迎查看下一篇文章。

打开 helloworld.h,添加两个函数(注意:需要在 private 后面添加 slots):

private slots:

void chinese();

void english();

在 private: 下面增加两个变量:

private:

QTranslator* trsChinese_;

QTranslator* trsEnglish_;

打开 helloworld.cpp,在构造函数中 ui.setupUi(this); 的后面增加:

trsChinese_ = new QTranslator();

trsEnglish_ = new QTranslator();

trsChinese_->load("helloworld_zh.qm");

trsEnglish_->load("helloworld_en.qm");

connect(ui.btnChinese, SIGNAL(clicked()), this, SLOT(chinese()));

connect(ui.btnEnglish, SIGNAL(clicked()), this, SLOT(english()));

函数 chinese() 与 english() 的实现如下:

void HelloWorld::chinese()

{

qApp->installTranslator(trsChinese_);

ui.retranslateUi(this);

}

void HelloWorld::english()

{

qApp->installTranslator(trsEnglish_);

ui.retranslateUi(this);

}

最终的代码图片如下:

qt开发入门简介 一步一步学习Qt开发(13)

qt开发入门简介 一步一步学习Qt开发(14)

编译运行,我们就可以实现动态切换语言啦。

,