qt 多语化
在项目多语化的文章开始编写之前,我说下qt多语化的思路,很简单,就3步,首先,从项目中获取字符串,然后编辑*.ts文件,填写需要翻译的字符串和对应的翻译后字符串,最后就是更新到项目中
接下来,我详细介绍vs2013+qt5多语化的每一个步骤
1、创建语言文件,如下图,然后translate_zh.hs文件执行lupdate操作,获取工程字符串到该ts文件
2、编辑翻译文件
启动Linguist(Qt语言家),打开cn.ts,然后进行编辑,主要是将源文对应的译文填写上,最后保存
3、部署翻译文件
工具->外部->Qt语言家->部署翻译,将生成语言文件qm
注:随时可以重复“2”~“3”步骤以便更新翻译
下面是qt多语化的一个简单事例,效果如下:
上图中英文显示的时候,有部分中文的原因是,qm文件在配置英文ts文件时的原因,为了演示,故意设置了部分翻译,部分没有翻译,下面贴上程序代码.
main.cpp
int main(int argc, char *argv[])
{
QApplication
a(argc, argv);
QTranslator
translator;
bool b =
false;
b =
translator.load(":/translate/translate_zh.qm");
a.installTranslator(&translator);
translate
w;
w.SetCurrentTranslate(&translator);
w.show();
return
a.exec();
}
translate .h
- class translate : public QWidget
- {
- Q_OBJECT
- public:
- translate(QWidget *parent = );
- ~translate();
- public:
- void SetCurrentTranslate(QTranslator * translator);
- private slots:
- void CurrentLanguageChanged(int);
- private:
- void Translate();
- private:
- Ui::translateClass ui;
- QTranslator * translator;
- };
- translate::translate(QWidget *parent)
- : QWidget(parent)
- {
- ui.setupUi(this);
- ui.comboBox_langugeType->addItem(tr("chinese"));
- ui.comboBox_langugeType->addItem(tr("english"));
- connect(ui.comboBox_langugeType, static_cast(&QComboBox::currentIndexChanged)
- , this, &translate::CurrentLanguageChanged);
- }
- translate::~translate()
- {
- }
- void translate::SetCurrentTranslate(QTranslator * translator)
- {
- this->translator = translator;
- this->Translate();
- }
- void translate::CurrentLanguageChanged(int index)
- {
- switch (index)
- {
- case :
- {
- translator->load(":/translate/translate_zh.qm");
- }
- break;
- case :
- {
- translator->load(":/translate/translate_en.qm");
- }
- break;
- }
- this->Translate();
- }
- void translate::Translate()
- {
- ui.comboBox_langugeType->setItemText(, tr("chinese"));
- ui.comboBox_langugeType->setItemText(, tr("english"));
- ui.label_tip->setText(tr("label"));
- ui.label->setText(tr("language:"));
- ui.pushButton_ok->setText(tr("ok"));
- ui.pushButton_quit->setText(tr("quit"));
- }
经此一用,中文到控件上乱码的问题也顺带完美解决了,享受了一次轻松多国语实现的过程。
qt 多语化的更多相关文章
- 行业干货-如何逆向解决QT程序汉化中乱码问题
前言 “一款QT开发的国外软件,大概率是没有做中文支持的,所以你汉化中,不论怎么设置编码都一定是乱码.面对这个问题,你去互联网上找答案,答案却大多是复制粘贴的开发中解决乱码的文章,可是我们是要逆向中解 ...
- Qt串行化的输入和输出(使用QDataStream读写QByteArray,对QIODevice直接起作用)
参考https://lug.ustc.edu.cn/sites/qtguide/ 今天看了一个介绍Qt串行化的介绍,感觉很受益,就记录了下来. 串行化(Serialization)是计算机科学中的一个 ...
- 剖析QMenu & Qt完全定制化菜单
贴张效果图: 定制包括: 1. 周边阴影 2. 菜单项的元素(分割符, 控制ICON大小, 文字显示位置与颜色, 子菜单指示符) 菜单内的效果, 部分可以使用stylesheet实现, 但要做到这样 ...
- qt窗口最小化之后无法打开
转自: https://blog.csdn.net/qiangzi4646/article/details/79743604 http://www.cnblogs.com/lingdhox/p/331 ...
- 【QT】子类化QThread实现多线程
<QThread源码浅析> 子类化QThread来实现多线程, QThread只有run函数是在新线程里的,其他所有函数都在QThread生成的线程里.正确启动线程的方法是调用QThrea ...
- 【QT】子类化QObject+moveToThread实现多线程
往期链接: <QThread源码浅析> <子类化QThread实现多线程> 从往期<QThread源码浅析>可知,在Qt4.4之前,run 是纯虚函数,必须子类化Q ...
- qt添加最小化和关闭按钮
int width = this->width();//获取界面的宽度 //构建最小化.最大化.关闭按钮 QToolButton *minButton = new QToolButton(thi ...
- QT自定义控件插件化简要概述
1.选择 "其他项目"->"Qt4 设计师自定义控件" **最好选中所有的编译器平台,由于目前使用的Qt Creator是MSVC2015 32位,因此要 ...
- 44.Qt通过子类化qstyle实现自定义外观
main.cpp #include <QtGui> #include "brozedialog.h" #include "bronzestyle.h" ...
随机推荐
- Alpha冲刺(3/10)——2019.4.25
作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...
- JAVA基础复习与总结<六> 数组_容器_泛型
数组的常用方法 java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的. 具有以下功能: 给数组赋值:通过 fill 方法. 对数组排序:通过 sort 方法,按升序. 比较 ...
- Java是值传递还是引用传递?
Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...
- JQuery模拟常见的拖拽验证
css部分 <style> #drag{ position: relative; background-color: #e8e8e8; width: 300px; height: 34px ...
- ORACLE启动报错ORA-03113: end-of-file on communication channel
使用过程中发现oracle运行很慢(其实应该先关注空间问题),就准备关机重启一下,关不掉就强制关闭,然后启动就报错了. 1.SQL> startup ORACLE instance starte ...
- 微信小程序统计分析
在微信公众平台社区看到一个不错的东西,小博统计:https://www.wxappdev.com/:用于微信小程序统计分析.
- UVALive 2474 Balloons in a Box(枚举)
https://vjudge.net/contest/277824#problem/A 尤其是模拟题,三思而后敲!!! 纠错了好久,主要还是没有处理好:单点若还未放气球,其他气球可以膨胀越过它(即可以 ...
- [LeetCode] New 21 Game 新二十一点游戏
Alice plays the following game, loosely based on the card game "21". Alice starts with 0 p ...
- 清理 zabbix 历史数据, 缩减 mysql 空间
zabbix 由于历史数据过大, 因此导致磁盘空间暴涨, 下面是结局方法步骤 1. 停止 ZABBIX SERER 操作 [root@gd02-qa-plxt2-nodomain-web-95 ~] ...
- sqlmap Windows 安装教程
第一步:下载 python :https://www.python.org/downloads/ (这里有python各种版本,但是一般建议安装3和2.7) sqlmap:https://git ...