Qt中英文切换(涉及多种场景)

article/2025/10/3 9:33:23

qt中英文切换涉及到一个软件两个文件,分别是QtLinguist、.ts文件和.qm文件。

1、在Pro中添加

TRANSLATIONS += en.ts \ch.ts

添加这个文件后qmake,然后如下操作点击更新:
在这里插入图片描述
这个时候会生成2两个文件en.ts和ch.ts。
在这里插入图片描述
2、将这两个文件添加到项目中方便修改。
在这里插入图片描述
3、这个时候我们可以在工程中进行准备工作了。
首先把代码中除.ui文件外的所有中文使用tr()括起来,使Qt Linguist能够识别到。
然后如下操作
在这里插入图片描述
使用QtLinguist方式打开。
在这里插入图片描述
找出所有需要翻译的中文,在下面输入栏中进行翻译。
翻译后点击以下操作进行确定。在这里插入图片描述
然后点击保存。
在这里插入图片描述
最后如下进行发布。
在这里插入图片描述
发布后会生成两个.qm文件。
将文件放在执行文件同级目录,方便后面进行加载。
在这里插入图片描述
4、加载qm文件实时切换中英文。

void Widget::on_pushButton_clicked()
{qDebug()<<m_translator->load(QApplication::applicationDirPath()+"/en.qm");qApp->installTranslator(m_translator);ui->retranslateUi(this);}void Widget::on_pushButton_2_clicked()
{qDebug()<<m_translator->load(QApplication::applicationDirPath()+"/ch.qm");qApp->installTranslator(m_translator);ui->retranslateUi(this);
}

这步完成后基本上只有主页在.ui文件中的控件可以实时中英文切换,但是还有很多切换没有成功。

4、这个时候有其它场景的中英文切换如下。
场景1:UI文件中的控件翻译,其它页面的.ui需要进入事件来进行配置。如下

void Form::changeEvent(QEvent *event)
{if(event->type() == QEvent::LanguageChange){this->ui->retranslateUi(this);}
}

场景2:主页和其它页非.ui文件中的控件(控件为成员对象时)

void Form::changeEvent(QEvent *event)
{if(event->type() == QEvent::LanguageChange){this->ui->retranslateUi(this);m_label->setText(tr("你好"));m_label2->setText(tr("测试2"));}
}

跟上面是不是很像,没错就是大部分一样,但是

this->ui->retranslateUi(this);

它只能修改.ui中的中英文,非.ui的需要自己来加载。

场景3:主页和其它页非.ui文件中的控件(控件为局部对象时)
这个就是控件在函数里面创建,翻译方法如下:

Form2::Form2(QWidget *parent) :QWidget(parent)
{QLabel* lab = new QLabel(tr("武汉加油"),this);lab->setGeometry(0,0,120,20);QPushButton* btn = new QPushButton(tr("武汉加油"),this);btn->setGeometry(0,30,120,20);
}Form2::~Form2()
{
}void Form2::changeEvent(QEvent *event)
{if(event->type() == QEvent::LanguageChange){QList<QLabel *> labs =this->findChildren<QLabel *>();foreach (QLabel *lab, labs){lab->setText(tr("武汉加油"));}QList<QPushButton *> btns =this->findChildren<QPushButton *>();foreach (QPushButton *btn, btns){btn->setText(tr("武汉加油"));}}
}

以上是介绍实时中英切换的,但是同时存在一个中文版本和一个英文版本是没有这么复杂的,直接加载.qm文件就行了,后面操作基本上都不需要了。

这里还介绍一个更简单的实时切换中英文的方法:
如下:
.cpp文件

void Widget::on_pushButton_clicked()
{qDebug()<<m_translator->load(QApplication::applicationDirPath()+"/en.qm");qApp->installTranslator(m_translator);ui->retranslateUi(this);qApp->exit();}void Widget::on_pushButton_2_clicked()
{qDebug()<<m_translator->load(QApplication::applicationDirPath()+"/ch.qm");qApp->installTranslator(m_translator);ui->retranslateUi(this);qApp->exit();
}

main.cpp文件:

    UMainWindow w;w.show();bool ok = a.exec();f(!ok){QProcess::startDetached(qApp->applicationFilePath(), params);return ok;}

这种是通过自动重启来实现的中英文切换。

在这里插入图片描述
在这里插入图片描述
源码


http://chatgpt.dhexx.cn/article/u9RwP1NV.shtml

相关文章

【Windows】中英文切换快捷键Caps

在 Windows 11 下中英文切换使用 Shift 快捷键&#xff0c;在 MacOS 是 Caps 快捷键。使用下面的步骤&#xff0c;就可以将 Windows 的中英文切换快捷键也使用和 Mac 的一样&#xff1a; 下载并安装Powertoys在键盘管理器中增加重新映射键&#xff1a; 设置好之后立即生效&am…

Win10系统中英文切换

购买的大型仪器设备&#xff0c;可能是海关进口的&#xff0c;其配套控制软件可能会运行在英文界面环境&#xff0c;在原配控制电脑故障或者更换时&#xff0c;存在安装英文OS操作系统的需求&#xff0c;经搜索发现Win10操作系统可以直接切换中英文语言&#xff0c;这里记录下&…

VS2019 中英文切换

1.点击工具选项 --->选择选项 2.点击环境--->选择区域设置---->选择English---->点击确认 3.如下图所示中文切换英文完成 4.英文切换中文操作如上步骤

pycharm界面改为中文,中英文切换

打开pycharm&#xff0c;选择“plugins”&#xff08;插件&#xff09;。 在plugins市场的搜索框&#xff0c;输入“chinese” 选择第二个插件&#xff0c;点击插件后面的安装按钮“install”&#xff0c;会自己安装&#xff0c;安装好后&#xff0c;软件会要求重新启动&…

Altium Designer 20的中英文切换

前言 上一篇给大家介绍了怎么安装Altium Designer 20&#xff0c;那么今天这一篇给大家介绍怎么对Altium Designer 20进行中英文模式切换&#xff0c;话不多说&#xff0c;上图&#xff01; 1.双击打开AD 20 2.此时是英文状态下的界面 3.点击设置图标 4.点击System——Genera…

PyCharm中英文版本切换

前几天&#xff0c;同门用我电脑软件pycharm&#xff0c;因为我设置的是英文版的&#xff0c;他啥也看不懂&#xff0c;因此今天分享一下pycharm中文设置方法&#xff0c;快来点赞收藏吧....... 1. 英文切换到中文 点击File&#xff0c;找到Settings 进入Settings&#xff0c…

VS 2022 中英文切换

装了纯净的 win11 pro N 版本系统之后&#xff0c;发现系统是全英文的&#xff0c;卸载又麻烦&#xff0c;将就着用了&#xff0c;在装完 VS 之后&#xff0c;发现默认的也是英文环境&#xff0c;这下玩不转了&#xff0c;所以要换成中文环境&#xff0c;记录下操作过程。 在工…

花一分钟彻底搞懂Mac输入法/中英文/大小写切换

最近有麦友说&#xff1a;没搞懂 Mac 怎么切换输入法、中英文和大小写&#xff0c;比如以前点按大写锁定键就可以切换到大写&#xff0c;现在要长按。有的时候点按大写锁定键或 shift 键都可以切换中英文&#xff0c;有的时候又不行。切换的时候基本就是碰运气瞎按。 之所以会有…

树的深度和高度

定义 深度&#xff1a;对于任意节点n,n的深度为从根到n的唯一路径长&#xff0c;根的深度为0&#xff1b; 高度&#xff1a;对于任意节点n,n的高度为从n到一片树叶的最长路径长&#xff0c;所有树叶的高度为0&#xff1b; 树的高度 &#xff1a;树的高度是它的所有节点中的最…

树的深度和高度的区别

树的深度和高度区别【数据结构】 关于树的深度和高度我一直容易混淆&#xff0c;故写这篇博客记录。 先来看我从PPT里找到的答案 也就是节点的层次/深度是从根开始数的&#xff0c;离根节点的路径长度为深度&#xff0c;根节点的深度为0。 而结点的高度是从叶子节点开始数的&…

树的高度和深度概念

树的高度和深度概念 1.高度2.深度3.总结 1.高度 对于高度的理解&#xff0c;我们不管他数据结构什么什么知识&#xff0c;就拿楼房来说&#xff0c;假如一个人提问&#xff1a;楼房的高度有好高&#xff1f;我们会下意识的从底层开始往上数&#xff0c;假如楼有6层&#xff0c…

图的遍历生成树(深度遍历和广度遍历)

基本思想 深度优先遍历生成森林 1&#xff09;遍历无向图的各顶点&#xff0c;将其作为一个初始点&#xff0c;建立深度优先生成树 2&#xff09;在建树函数DFSTree()中&#xff0c;设置标识&#xff0c;将第一个结点设置为根节点的左孩子&#xff0c;其余结点作为左孩子的兄弟…

关于树的深度和高度的计算

关于树的深度和高度的计算&#xff0c;我看到两个不同的说法&#xff0c;它们的区别就在于到底是从0开始计算还是从1开始计算。&#xff08;网上的和算法题偏向说法二&#xff0c;如果有能找到更加权威的解答望不吝赐教&#xff09; 说法一&#xff1a; 《数据结构与算法分析&…

树的高度与深度--真情版

文章目录 一. 前言二. 大话高度与深度三. OJ题中使用的版本四. 考研中使用的版本五. 总结 一. 前言 数据结构-----树的学习过程中&#xff0c;我们会遇见一些摸棱两可的概念&#xff0c;比如树的度&#xff0c;子树的高度&#xff0c;子树的的深度等。我们时不时的会产生这样的…

树的高度、深度、层的区别

“高度”这个概念&#xff0c;其实就是从下往上度量&#xff0c;比如我们要度量第10层楼的高度、第13层楼的高度&#xff0c;起点都是地面。所以&#xff0c;树这种数据结构的高度也是一样&#xff0c;从最底层开始计数&#xff0c;并且计数的起点是0。 “深度”这个概念在生活…

【数据结构】树的高度和深度

1.高度 结点的高度&#xff1a;从该节点向下分支的叶节点开始自底向上逐层累加。 对于高度的理解&#xff0c;就拿楼房来说&#xff0c;我们会从底层开始往上数&#xff0c;假如楼有6层&#xff0c;则我们会说&#xff0c;这个楼有6层楼那么高。所以高度就是以从下往上对比&…

树的高度和深度以及结点的高度和深度

–> 参考链接 <– 树的高度和深度 深度定义是从上往下的&#xff0c;高度定义是从下往上的。&#xff08;其实不用在意这个&#xff0c;反正树的深度高度怎么数都一样的&#xff09;。 有两种说法&#xff1a; 高度就是深度看层数&#xff1a; 如果根结点第0&#xff…

树的深度与广度优先遍历

树是前端工程师最经常打交道的一个数据结构&#xff0c;比如说html标签组成的dom树、树形控件等。 在js中没有树这个数据结构&#xff0c;但是可以用Object和Array来构建树&#xff1a; //val是当前的节点值&#xff0c;children是子节点 const tree {val: A,children: [{va…

树的高度和深度的区别

树的高度和深度的区别 标签&#xff1a; 数据结构二叉树 2014-04-16 10:47 3362人阅读 评论(0) 收藏 举报 分类&#xff1a; 数据结构 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 对于树的基本概念上理解&#xff0c;对于才接触…

树的深度和高度解释

有个缺点&#xff0c;看到什么东西不管是不是重点只要说不通总是爱钻牛角尖。 对于 树的高度和深度&#xff08;以及结点的高度和深度&#xff09; 看了几本不同的书&#xff0c;都有各自的说法&#xff0c;多方查证吧&#xff0c;花了很多时间&#xff0c;最后归纳一个能说服我…