Qt实现多国语言(即界面翻译)可实时进行切换
.在工程文件添加
TRANSLATIONS = debug/lang_English.ts \
debug/lang_Chinese.ts .在需要翻译的地方用上tr
例如:setText(tr("hello world")); .提供一个更改语言的接口
void MainWindow::changeTr(int language) .重载void changeEvent(QEvent *e); 对语言改变事件进行处理 .利用qt语言家更新翻译,手工翻译生成的.ts文件之后,再进行发布翻译
下面是个简单例子:
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QLabel> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); void changeEvent(QEvent *e); void changeTr(int language_label); private:
Ui::MainWindow *ui;
QLabel *label,*label1;
}; #endif // MAINWINDOW_H
//mainwindows.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QTranslator>
#include <QDebug> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
label = new QLabel(this);
label1 = new QLabel(this); label->setText(tr("hello world"));
label1->setText(tr("hello")); label1->move(label->x(),label->y()+label->height()); ui->setupUi(this); } MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::changeTr(int language_label)
{
QString qmFilename;
static QTranslator* translator;
if (translator != NULL)
{
qApp->removeTranslator(translator);
delete translator;
translator = NULL;
}
translator = new QTranslator(this); QString runPath = QCoreApplication::applicationDirPath(); //获取文件运行路径
qDebug() << runPath;
if(language_label==)
{
qmFilename = runPath + "/lang_Chinese.qm";
}
else
{
qmFilename = runPath + "/lang_English.qm";
}
qDebug() << qmFilename;
if (translator->load(qmFilename))
{
qDebug() << "installTranslator";
qApp->installTranslator(translator);
}
// ui->retranslateUi(this); // 重新设置界面显示
} void MainWindow::changeEvent(QEvent *e)
{
// MainWindow::changeEvent(e);
switch (e->type())
{
case QEvent::LanguageChange:
qDebug() << "changeEvent" << e->type();
label->setText(tr("hello world"));
label1->setText(tr("hello"));
ui->retranslateUi(this);
break;
default:
break;
}
}
//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QThread>
#include "stdlib.h" int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w; // w.changeTr(1); w.show();
w.changeTr(); return a.exec();
}
Qt实现多国语言(即界面翻译)可实时进行切换的更多相关文章
- C#实现多国语言的界面切换
在PictureStudio中,我需要实现多国语言的界面切换,而且切换各种语言版本的时候希望程序是动态的加载语言,不希望切换语言后重新启动程序. 实现这样的功能可以有很愚蠢的方法,比如说你可以在程序中 ...
- (2)esp8266多国语言翻译系统
http://bbs.mydigit.cn/simple/?t2649513.html 这个想法不错 原来只是想用esp8266搞一个百度的多国语言翻译系统出来的,只是为了尝试如何调用各种web ap ...
- 解析大型.NET ERP系统 多国语言实现
实现多国语言有许多种实现方案,无外乎是一种字符串替换技术,将界面控件的文本标签替换成相应语言的文字..NET Windows Forms实现多国语言的方法有以下几种: 1 .NET的方案,使用资源文件 ...
- 高质量,高效率的多国语言软件开发(Web/PC/Mobile),使用接口约束/调用不同语言资源
偶然间翻出了几年前写的一个小程序,把当时的资料整理整理分享一下. 当时为了给自己的软件实现多国语言功能,而开发的辅助工具:SE String Resource. 这是当时基于自己另一款 IDE 软件抽 ...
- 引擎设计跟踪(九.8) Gizmo helper实现与多国语言
最近把gizmo helper的绘制做好了. 1.为了复用代码,写了utility来创建sphere, cube, cylinder, plane, ring(line), circle(solid) ...
- Inno Setup:获取isl中的多国语言字串
原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...
- WPF应用程序支持多国语言解决方案
原文:WPF应用程序支持多国语言解决方案 促使程序赢得更多客户的最好.最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分.本文介绍四种实现WPF应用程序支持多国语言 ...
- Vnc自动登录器-多国语言绿色版
推荐:介绍一个VNC连接工具:iis7服务器管理工具.IIs7服务器管理工具可以批量连接并管理VNC服务器.作为服务器集成管理器,它最优秀的功能就是批量管理windows与linux系统服务器.vps ...
- WinCE6.0多国语言软键盘
N久以前写过一篇<WinCE下自定义的大软键盘>,这个自定义软键盘就是为RM905a+项目来做的.RM905a+的系统分辨率是640*480,WinCE原生键盘小的太小,大的又太大.所以就 ...
随机推荐
- sql 循环转移备份数据
--创建表结构 select top 1 * into ATable_20190710 from ATable --转移表数据 insert into ATable_20190710 select t ...
- linux系统设置允许密码登录
编辑 /etc/ssh/sshd_config 文件 将PasswordAuthentication 的值改为 yes 然后重启ssh 服务 进入到 /etc/init.d 文件夹内 执行 ./s ...
- ARST 第五周打卡
Algorithm : 做一个 leetcode 的算法题 /////////////////////////////////////////////////////////////////// // ...
- P1373 小a和uim之大逃离(DP)
(点击此处查看原题) 题意 中文题,题意看题面吧. 解题思路 注意到我们只能向右和下移动,由此想到开二维的dp数组dp[i][j],代表当前所在位置 我们需要让两人取数的差值为0,由于起点和走法的不同 ...
- Hyperledger Fabric-sdk-java
Hyperledger Fabric-sdk-java 2018年04月18日 23:36:02 l_ricardo 阅读数 975更多 分类专栏: 区块链 java 版权声明:本文为博主原创文章 ...
- Scala学习十——特质
一.本章要点 类可以实现任意数量的特质 特质可以要求实现它们的类具备特定的字段,方法或超类 和Java接口不同,Scala特质可以提供方法和字段实现 当你将多个特质叠加在一起时,顺序很重要——其方法先 ...
- Parallel的使用
Action<int, int> ReportProcess //返回数据,刷新进度 Exception exception = null; object objLock = new ob ...
- Flink概述
计算引擎 大数据计算引擎分为离线计算和实时计算,离线计算就是我们通常说的批计算,代表是Hadoop MapReduce.Hive等大数据技术.实时计算也被称作流计算,代表是Storm.Spark St ...
- 【原创】数据库基础之Sqlite
官方:https://www.sqlite.org/index.html 简介 SQLite is a C-language library that implements a small, fast ...
- ubuntu 编译zbar 静态库
wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.gz tar -zvxf zbar-0.10.ta ...