传统数组法:

定义一个字符串二维数组,

QString weekStr[2][7] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日",\
"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
void MainWindow::on_comboBox_currentIndexChanged(int index)
{static int lastindex = 0;if(index == lastindex)return;lastindex = index;QList<QLabel *> lbs = this->findChildren<QLabel *>();int i_cnt = 0;foreach (QLabel *lb, lbs) {lb->setText(tr("%1").arg(weekStr[index][i_cnt++]));}for(int i = 0;i<2;i++){ui->comboBox->setItemText(i,language[index][i]);}
}

接下来就可以看到效果

但是这只是在你字体少的情况,如果你字体很多,你就可以使用qt自带的语言家

具体操作如下:

  • 对用户可见的文本信息全部使用tr()进行封装。至于为什么一定要用tr可以看https://blog.csdn.net/liang890319/article/details/7041786

  • 在pro中添加:

  • TRANSLATIONS += ts_zh.ts  ts_en.ts

此时你只需要在界面ui写好控件名

如:

然后选择:工具->外部->Qt语言家->更新翻译,则会生成对应的ts文件。

  • 翻译:使用Qt Linguist打开要翻译的ts文件,对翻译源进行相应语言的翻译。

将这些英文翻译输入后,点击问号

然后保存->发布即可

在qt的语言家刚才更新翻译,现在选发布翻译

此时你肯定已经有了两个qm文件,将其添加到资源文件

在combox里添加:

void MainWindow::on_comboBox_currentIndexChanged(int index)
{static int lastIndex = 0;if(index == lastIndex)return;lastIndex = index;static  QTranslator*  translator;if  (translator  !=  NULL){qApp->removeTranslator(translator);delete  translator;translator  =  NULL;}translator  =  new  QTranslator;if(index==0){if(translator->load(":/tr_zh.qm")){qApp->installTranslator(translator);}}else{if(translator->load(":/tr_en.qm")){qApp->installTranslator(translator);}}ui->label->setText(tr("星期一"));ui->label_2->setText(tr("星期二"));ui->label_3->setText(tr("星期三"));ui->label_4->setText(tr("星期四"));ui->label_5->setText(tr("星期五"));ui->label_6->setText(tr("星期六"));ui->label_7->setText(tr("星期日"));ui->comboBox->setItemText(0,tr("中文"));ui->comboBox->setItemText(1,tr("英文"));
}

切记,更新了翻译一定要重新settext或者刷新ui,不然不会生效

此生成的文件就可以中英文动态切换显示

我这里是因为用combox必须settext,如果你们不是combox是radiobutton就更方便了,直接刷新ui

代码更是简单:

如果不需要动态切换,那么你只需要

就只在初始的时候生效了

Qt之切换语言的方法(传统数组法与Qt语言家)相关推荐

  1. 学习c语言的方法类比,类比法在C语言程序设计教学中运用.doc

    类比法在C语言程序设计教学中运用 类比法在C语言程序设计教学中运用 摘要:教学中方法得当,事半功倍.该文重点阐述了类比法在<C语言程序设计>教学过程中的应用,以函数实例介绍了方法的展开过程 ...

  2. c语言中的一维数组的定义,C语言一维数组的定义和引用

    <C语言一维数组的定义和引用>由会员分享,可在线阅读,更多相关<C语言一维数组的定义和引用(5页珍藏版)>请在人人文库网上搜索. 1.C语言一维数组的定义和引用在程序设计中,为 ...

  3. c语言中的字符串数组,详解C语言中的字符串数组

    在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小.第二种没有字符串的大小限制. #include #incl ...

  4. 鲍威尔方法c语言程序,鲍威尔法编程-powell法编程-c语言编程-c++6.0.doc

    鲍威尔法编程-powell法编程-c语言编程-c++6.0.doc include stdio.hdefine N 2float gsfloat zNfloat f;f10*z0z1-5*z0z1-5 ...

  5. c语言指针转换成数组,浅议C语言中灵魂数组和指针的互操作(转)

    浅议C语言中灵魂数组和指针的互操作(转)[@more@]曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是 ...

  6. c语言字符二维数组传参,C语言函数传递二维数组

    C语言如果给函数传递二维数组作为参数 问题的产生 先看一个传递二维数组的例子: #include void foo(int a[][], int m, int n) { int i = 1; int ...

  7. C语言中指针与数组的区别,C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...

  8. C语言使用二维数组存储姓名,C语言二维数组 - osc_it9fazjn的个人空间 - OSCHINA - 中文开源技术交流社区...

    上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为一维数组.在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组.多维数组元素有多个下标,以确定它在数组中的位置.本节只介绍二维数 ...

  9. c语言memset清空指向数组的指针_C语言中数组和指针的关系

    数组的数组名其实可以看作一个指针.看下例: 1.    int array[10]={0,1,2,3,4,5,6,7,8,9},value; 2.    value=array[0]; //也可写成: ...

  10. C语言排序方法-----选择排序法

    首先来看看选择排序法的定义 核心思想就是先在所有数据中选出一个最大或者最小的数放在第一位,然后再剩下的数据继续选最大或者最小的数放在第二位,依次进行下去直到结束. 下来直接看C代码的实现 #defin ...

最新文章

  1. matplotlib画图
  2. Android中的Handler
  3. 计算机 连接ip,连接在Internet上的计算机都拥有IP地址。
  4. 工业以太网交换机有多少个快速以太网接口?
  5. 【计算机组成原理】I/O设备
  6. 盘点云原生的5大特征
  7. CCNP路由实验之八 路由重公布
  8. 今天去看招聘会了~~
  9. Ant Design Pro引入Echarts 报错Unexpected token
  10. 分布式技术是大规模应用的最后一个考验
  11. Open-Unmix - A Reference Implementation for Music Source Separation
  12. UltraISO 制作U盘启动盘(Ubuntu、CentOS)
  13. 了解信息安全管理体系的基本思路
  14. 计算机专业设计(论文)内容及要求,计算机专业毕业设计要求.doc
  15. How-To Geek正在寻找远程全职技术作家
  16. 对话系统 NLU项目总结报告
  17. Uni-app API
  18. Excel删除区域内的空白格
  19. 人生若只如初见 z-x-l [我的故事和写过的诗]
  20. Linux中的if-then语句

热门文章

  1. jspstudy oracle,SQL不走索引的几种常见情况
  2. 服务器PHPWAMP_IN2安装redis
  3. Linux 之 常用端口
  4. gsp计算机设施设备表格,GSP计算机系统内审表.doc
  5. java大写转小写_Java字母大小写转换的方法
  6. Docker入门学习
  7. PSPnet预训练模型caffe model转pytorch
  8. IDEA 导入项目中文注释乱码解决
  9. 朋友圈加粗字体数字_如何让你的朋友圈骚到脱颖而出?
  10. si4438使用stm32f103配置调试成功!