网站首页 > 编程文章 正文
实现多国语言切换的方法:
首先点击菜单 QT5 --> Create new Translation File,需要注意的是必须要选中工程的任何一个地方(即左边 Solution 中树形结构的工程位置),否则菜单是灰色不能点击状态的。
我们创建两个翻译文件:
helloworld_zh.ts
helloworld_en.ts
如果只需要中文的话,只需要创建 helloworld_zh.ts 即可。
创建两个翻译文件后得到上图的树形结构,下面双击 helloworld.ui,拖两个 QPushButton 到界面上,分别修改变量名为 btnChinese、btnEnglish:
大分辨率的图片会被头条降低质量,如果看不清楚的话,以下是分别截取的两个小图片:
保存并关闭 UI 设计师,回到工程,我们分别右键两个翻译文件,点击“lupdate”:
双击 helloworld_en.ts 或 helloworld_zh.ts,默认会调用 Qt 语言家打开相应文件:
在 1 的地方输入译文,点击 2 表示完成翻译,最后不要忘记点击“保存”。我只对标题 HelloWorld 作了中英文区别翻译,英文是:Hello World,中文是:你好 世界,而按钮 Chinese 与 English 无论是英文翻译包还是中文翻译包,都分别是:“中文”与“English”。保存退出后,还需要分别对两个翻译源文件调用“lrelease”:
调用 lrelease 后,会对 *.ts 文件翻译为相应的 Qt 翻译文件格式 *.qm:
我们可以使用记事本等文本文件打开 *.ts 文件,实际上它是 XML 文件:
下面我们先来实现程序启动的时候默认是中文的,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>
编译运行:
我们需要实现的是点击按钮动态切换语言,“点击事件”涉及到一个很重要的功能:“信号/槽”,我们将在下一篇文章介绍,现在一起来实现鼠标点击事件,如果暂时不理解代码,欢迎查看下一篇文章。
打开 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);
}
最终的代码图片如下:
编译运行,我们就可以实现动态切换语言啦。
猜你喜欢
- 2024-11-03 使用 Filebeat+Easysearch+Console 打造日志管理平台
- 2024-11-03 【实战揭秘】ELK日志分析生产环境应用,你准备好了吗?
- 2024-11-03 一 基于 Netty 网络编程项目实战课程
- 2024-11-03 Java 监控直播流rtsp协议转rtmp、hls、httpflv协议返回浏览器
- 2024-11-03 Docker安装ELK并实现JSON格式日志分析
- 2024-11-03 C/C++ Qt TreeWidget 单层树形组件应用
- 2024-11-03 第2篇 基础(二)编写Qt多窗口程序(qt一个窗口多个页面)
- 2024-11-03 大数据 Hadoop(下) 笔记大全 收藏加关注
- 2024-11-03 「大数据」「Hadoop」MapReduce的基本编程框架
- 2024-11-03 手把手实现火爆全网的视频特效“蚂蚁呀嘿”,太魔性了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)