1.在工程文件添加
TRANSLATIONS = debug/lang_English.ts \debug/lang_Chinese.ts2.在需要翻译的地方用上tr
例如:setText(tr("hello world"));3.提供一个更改语言的接口
void MainWindow::changeTr(int language)4.重载void changeEvent(QEvent *e); 对语言改变事件进行处理5.利用qt语言家更新翻译,手工翻译生成的.ts文件之后,再进行发布翻译

下面是个简单例子:

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~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==1){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(1);return a.exec();
}

转载于:https://www.cnblogs.com/nanqiang/p/10385073.html

Qt实现多国语言(即界面翻译)可实时进行切换相关推荐

  1. QT实现多国语言的动态切换

    摘要:本文论述了如何使用QT实现程序的多语系支持以及多语系的动态切换. 前沿 我们生活中用到的程序大多都是支持单一语言的,比如在中国我们用到的软件大多是汉语的,也有很少部分使用的是英语的,但是很少有软 ...

  2. 【电子刊物制作】名编辑电子杂志大师教程 | 设置多国语言浏览界面

    在 名编辑电子杂志制作软件中,所有的语言问题都不是问题,它可以帮助您设置电子杂志的窗口界面语言,提供了十几种语言. 无论是法语. 葡萄牙语.意大利语.日语.思密达语.阿拉伯语还是德语,直接套用就可以了 ...

  3. 在VS中实现QT的多国语言翻译

    QT的多国语法翻译非常的实用,可以将开发完成的软件,直接翻译成另外一种语言,而不需要更改代码,也就是说一次开发可以同时发布多个语言版本的软件. 翻译过程 创建翻译文件:从代码中自动提取出能翻译的文本, ...

  4. VS中使用QT,多国语言翻译问题

    VS版本:VS2010 Qt版本:Qt5.5.1 例 子:英译汉 以下介绍是我站在巨人们的肩膀上,并结合自己在工作中所遇到的问题作出的总结. 在VS中使用Qt编程,VS是不支持中文格式的,所以遇到了语 ...

  5. Qt工作笔记-仿QQ登录界面(换肤,切换语言)

    本程序含有资源文件,和QSS,在此博文不在展示. 源码下载地址: https://download.csdn.net/download/qq78442761/10389816 程序运行截图如下: 本程 ...

  6. android多国语言翻译包命名,android多国语言翻译工具,一键生成28国家翻译6666翻车了...

    最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,因而用百度翻译api进行多国语言翻译.java 很少说直接上代码:json ""; api 匹配的是app ...

  7. android多国语言翻译工具,一键生成28国家翻译6666翻车了

    最近把软件发到google play苦于多国语言,手动翻译数量太多太蛋疼,于是用百度翻译api进行多国语言翻译. 不多说直接上代码: "<string\\s*name=\\\" ...

  8. 在线客服系统前端多国语言实现方案和代码

    业余时间用 .net core 写了一个免费的在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://go.sh ...

  9. QT在QML下实现多国语言翻译

    在某些情况下,我们使用QT开发的界面需要完成多国语言的翻译工作.QT在这方面其实已经给出了支持,本文主要讲述在使用QML编写界面的情况下如何实现多国语言的翻译. 若要实现QT多国语言翻译,必须要搞清楚 ...

最新文章

  1. Java_中快速获取系统时间
  2. Java泛型解析(02):通配符限定
  3. 校验金额、大小写字母、大写字母、合法uri、email
  4. JVM入门到放弃之基本概念
  5. LoadRunner常遇见的问题
  6. cnblog div+CSS 布局常识 8问
  7. HP Helion拉开商用大幕
  8. centos6.8安装xfce+vnc
  9. ubuntu 关闭IPv6
  10. Elasticsearch系列——实战探索text与keyword的区别
  11. 开源无人机如何实现空对地框选撞击?
  12. Aruba7010 默认密码_收藏 | 各大品牌的变频器默认密码、万能密码、超级密码汇总...
  13. ppt更换模板以及修改图片背景色统一的问题
  14. Fast Non-Bayesian Poisson Factorization for Implicit-Feedback Recommendations
  15. SpringBoot+websocket实现私聊和群聊(可以发送文字和图片)
  16. week7 TT的魔猫
  17. 面试经历(纯属个人经历,仅供观看参考)
  18. C语言|博客作业06
  19. ip地址映射-方便开发微信公众号,小程序等
  20. com.googlecode.genericdao

热门文章

  1. java的知识点34——任务定时调度(多线程)
  2. Python 技术篇-通过进程名获取进程pid实例演示,使用psutil库获取进程id
  3. PL/SQL 数据库连接工具的下载、安装与使用实例演示
  4. c# winform datagridview改变表头标题的颜色(column header)
  5. CTFshow php特性 web126
  6. CodeForces 845C Two TVs
  7. 第四周实践项目2 算法库——单链表
  8. cumprod--累积连乘
  9. calcBackProject函数(搜索小物体的位置)
  10. pytorch maxout实现