当前位置: 首页 > news >正文

QT多语言切换功能

一.目的

在做项目时,有时希望我们的程序可以在不同的国家使用,这样最好的方式是一套程序能适应于多国语言。

Qt提供了这样的功能,使得一套程序可以呈现出不同的语言界面。本文将介绍QT如何实现多语言,以中文和英文为例。

QT开发环境:QT5.12

二.步骤

1.第一步

  新建一个项目工程,在pro文件中添加下面的语句:

TRANSLATIONS += \

    language_en_AS.ts \

    language_zh_AS.ts

这样最终可以生成适用于汉语和英语的ts文件。

2.第二步

然后点击工具-》外部-》语言家-》更新翻译(lupdate)。即使用lupdate工具,生成pro文件中添加的ts文件。

生成这两个ts文件:

3.点击电脑开始菜单,在出现的应用程序列表栏找到Qt安装文件夹,找到Linguist,选择适合自己的Linguist工具,双击打开:

选择需要翻译的ts文件:

确保都是绿色√:

均完成后“文件菜单”内选择保存,发布,会生成qm文件如下路径内:

注意:

如果本身就是中文,目标也是中文,翻译内的部分不用填写,如下:

4.在exe文件所在目录下新建文件夹translator,并将生成的两个qm文件移入

二.代码实现

1.mainwindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include <QTranslator>

QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{

    Q_OBJECT

public:

    MainWindow(QWidget *parent = nullptr);

    ~MainWindow();

private slots:

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

private:

    Ui::MainWindow *ui;

    QTranslator m_tran;

};

#endif // MAINWINDOW_H

2.mainwindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include <QTranslator>

#include <QDebug>

MainWindow::MainWindow(QWidget *parent)

    : QMainWindow(parent)

    , ui(new Ui::MainWindow)

{

    ui->setupUi(this);

    ui->textEdit->setText(tr("多语言切换功能"));

}

MainWindow::~MainWindow()

{

    delete ui;

}

void MainWindow::on_pushButton_clicked() //中文

{

    QString strPath = QCoreApplication::applicationDirPath(); //exe文件路径

    bool bSuccess =m_tran.load(strPath + "/translator/language_zh_AS.qm");

    if(bSuccess)

    {

        qApp->installTranslator(&m_tran);

        ui->retranslateUi(this);

    }

    else

    {

        qDebug()<<tr("读取qm文件失败");

    }

}

void MainWindow::on_pushButton_2_clicked()  //英文

{

    QString strPath = QCoreApplication::applicationDirPath(); //exe文件路径

    bool bSuccess =m_tran.load(strPath + "/translator/language_en_AS.qm");

    if(bSuccess)

    {

        qApp->installTranslator(&m_tran);

        ui->retranslateUi(this);

    }

    else

    {

        qDebug()<<tr("读取qm文件失败");

    }

}

void MainWindow::on_pushButton_3_clicked()

{

     ui->textEdit->setText(tr("多语言切换功能"));  //这个需要翻译部分必须用tr()函数

}

说明:

当你使用tr()函数时,Qt会在运行时检查当前的语言环境设置,并查找相应的翻译。如果没有找到翻译,或者当前语言环境与翻译文件不匹配,tr()函数将返回原始字符串。

3.实验结果

(1)初始页面

(2)点击“英文”按钮

(3)点击“测试”按钮

注意:

ui->textEdit->setText(tr("多语言切换功能"));  //需要修改语言环境后执行,这样就会和语言环境一样了 //但不会像button的名字那样按中英文按钮时自动变化

参考文章:

https://blog.csdn.net/weixin_42426713/article/details/132107762

https://blog.csdn.net/sdft06/article/details/130204659

https://blog.csdn.net/blqzj214817/article/details/127396411

相关文章:

QT多语言切换功能

一.目的 在做项目时&#xff0c;有时希望我们的程序可以在不同的国家使用&#xff0c;这样最好的方式是一套程序能适应于多国语言。 Qt提供了这样的功能&#xff0c;使得一套程序可以呈现出不同的语言界面。本文将介绍QT如何实现多语言&#xff0c;以中文和英文为例。 QT开发…...

windows上elasticsearch的ik分词器的安装

下载 下载地址 在elasticsearch下的plugins文件夹下创建ik的文件夹 下载的ik压缩包解压到plugins/ik 重启elasticsearch 验证 http://ip:9200/_cat/plugins...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的口罩识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发口罩识别系统对于提升公共卫生安全和疫情防控具有重要意义。本篇博客详细介绍了如何利用深度学习构建一个口罩识别系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并结合了YOLOv7、YOLOv6、YOLOv5的对比&#xff0c;给出…...

在Windows系统中启动Redis服务

前言 Redis是一个开源、高性能的键值对数据库&#xff0c;常用于缓存、消息队列等场景。本文将详细指导您如何在Windows系统上启动Redis服务。 第一步&#xff1a;确认Redis安装 确保您已经在Windows系统上成功安装了Redis。官方提供了预编译好的Windows版本&#xff0c;您可…...

k8s.gcr.io/pause:3.2镜像丢失解决

文章目录 前言错误信息临时解决推荐解决onetwo 前言 使用Kubernetes&#xff08;k8s&#xff09;时遇到了镜像拉取的问题&#xff0c;导致Pod沙盒创建失败。错误显示在尝试从k8s.gcr.io拉取pause:3.2镜像时遇到了超时问题&#xff0c;这通常是因为网络问题或者镜像仓库服务器的…...

全面整理!机器学习常用的回归预测模型

Datawhale干货 作者&#xff1a;曾浩龙&#xff0c;Datawhale意向成员 前言 回归预测建模的核心是学习输入 到输出 &#xff08;其中 是连续值向量&#xff09;的映射关系。条件期望 是 到 的回归函数。简单来说&#xff0c;就是将样本的特征矩阵映射到样本标签空间。 图…...

在vue中对keep-alive的理解,它是如何实现的,具体缓存的是什么?

对keep-alive的理解&#xff0c;它是如何实现的&#xff0c;具体缓存的是什么&#xff1f; &#xff08;1&#xff09;keep-alive有以下三个属性&#xff1a;注意&#xff1a;keep-alive 包裹动态组件时&#xff0c;会缓存不活动的组件实例。主要流程 &#xff08;2&#xff09…...

章节一、认识three.js与开发环境学习笔记01;

一、如何学习WEB可视化3D技术与课程内容演示&#xff1b; 1、项目案例&#xff1a; 政府有大量的新基建的项目&#xff1a;如数字孪生、智慧城市、智慧园区、智慧工厂、智慧消防等等都涉及了3d的可视化技术&#xff1b; 2、如何系统的学号WEB 3D可视化技术&#xff1f; three…...

QT摄像头采集

主界面为显示框&#xff0c;两个下拉框&#xff0c;一个是所有相机&#xff0c;一个是相机支持的分辨率 系统根据UI界面自动生成的部分不再描述&#xff0c;以下为其他部分源码 widget.h #include <QWidget> #include <QMouseEvent> class QCamera; class QCamer…...

C语言第三十四弹---动态内存管理(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 动态内存管理 1、动态内存经典笔试题分析 1.1、题目1 1.2、题目2 1.3、题目3 1.4、题目4 2、柔性数组 2.1、柔性数组的特点 2.2、柔性数组的使用 2.3、…...

PDN分析及应用系列二-简单5V电源分配-Altium Designer仿真分析-AD

PDN分析及应用系列二 —— 案例1:简单5V电源分配 预模拟DC网络识别 当最初为PCB设计打开PDN分析仪时,它将尝试根据公共电源网络命名法从设计中识别所有直流电源网络。 正确的DC网络识别对于获得最准确的模拟结果非常重要。 在示例项目中已经识别出主DC网络以简化该过程。 …...

Vue开发实例(一)Vue环境搭建第一个项目

Vue环境搭建&第一个项目 一、环境搭建二、安装Vue脚手架三、创建Vue项目 一、环境搭建 下载方式从官网下载&#xff1a;http://nodejs.cn/download/ 建议下载v12.16.0版本以上的&#xff0c;因为版本低无法创建Vue的脚手架 检验是否安装成功 配置环境变量 新增NODE_HOME&…...

将SpringBoot项目改造成solon项目

solon项目介绍 官网 Java “生态型”应用开发框架&#xff1a;更快、更小、更简单。 启动快 5 &#xff5e; 10 倍&#xff1b;并发高 2&#xff5e; 3 倍&#xff1b; 内存省 1/3 ~ 1/2&#xff1b;打包缩到 1/2 ~ 1/10&#xff1b;同时支持 java8, java11, java17, java21&a…...

更详细的软件测试理论基础:流程,开发、测试模型,测试分类,测试用例及其设计方法,缺陷

文章目录 一、测试流程二、开发模型1、 瀑布模型2、增量模型3、快速模型4、其他 三、测试模型1、V模型2、W模型 四、测试分类五、测试用例 test case六、测试用例设计方法1、等价类划分法2、边界值分析法3、因果图法4、判定表法5、正交法6、场景法7、流程分析法8、错误推测法方…...

input css padding

这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况&#xff0c;这是因为内层控件定义的时候不能超出外层控件的范围。 修改下&#xff1a;去掉原来css padding&#xff0c;然后加上宽度和高度...

如何打印 springboot 框架中 接收请求的日志

在 Spring Boot 框架中&#xff0c;您可以使用日志来记录接收请求和发送响应的详细信息。Spring Boot 默认使用 SLF4J&#xff08;Simple Logging Facade for Java&#xff09;作为日志抽象层&#xff0c;并支持多种日志实现&#xff0c;如 Logback、Log4j2 等。以下是一种常见…...

JVM的内存区域划分

JVM即Java虚拟机&#xff0c;是Java实现跨平台交互能力的核心&#xff0c;Java编译后的.class文件&#xff0c;就是通过虚拟机和操作系统进行交互的&#xff1b; 常见的虚拟机有&#xff1a;JVM、VMwave、Virtual Box&#xff0c;目前最主流使用的JVM是HotSpot VM&#xff1b;…...

YOLOv9有效改进|使用动态蛇形卷积Dynamic Snake Convolution

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 使用ICCV2023中的动态蛇形卷积替换YOLOv9网络中的Conv模块。 二、Dynamic Snake Convolution模块详解 2.1 模块简介 应用场景&#x…...

设计模式学习笔记 - 设计原则 - 1.单一职责原则

前言 前面我们提到过 SOLID 原则&#xff0c;实际上 SOLID 由 5 个设计原则组成&#xff0c;分别是&#xff1a;单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖反转原则。它们分别对应 SLOID 中的 S、O、L、I、D 这 5 个英文字母。 今天来学习下 SOLID 原则中的第…...

飞天使-学以致用-devops知识点4-SpringBoot项目CICD实现(实验失败,了解大概流程)

文章目录 代码准备创建jenkins 任务测试推送使用项目里面的jenkinsfile 进行升级操作 文字版本流程项目构建 代码准备 推送代码到gitlab 代码去叩叮狼教育找 k8s 创建jenkins 任务 创建一个k8s-cicd-demo 流水线任务 将jenkins 里面构建时候的地址还有token&#xff0c; 给到…...

安装对中不到位,丝杆升降机越用越费!5大严重后果必看

在设备安装现场&#xff0c;经常能看到这样的场景&#xff1a;工人用卷尺大概量一下电机座和升降机输入轴的距离&#xff0c;然后用锤子把联轴器敲进去&#xff0c;螺栓拧紧就完事了。他们不知道&#xff0c;这种“差不多”的对中操作&#xff0c;正在为丝杆升降机埋下致命隐患…...

# Excel模板转PDF合并单元格边框全乱了?逐个格子读取边线信息再还原

Excel模板转PDF合并单元格边框全乱了&#xff1f;逐个格子读取边线信息再还原 非科班野生程序员&#xff0c;深耕政务信息化20年。从VC到PB再到Java&#xff0c;自研框架browise也打磨了十几年。最近整理框架代码&#xff0c;发现不少有趣的决策&#xff0c;写出来和大家聊聊。…...

基于yolov8和faster-rcnn的电动车戴头盔检测,界面可选择模型,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪、图像分割、图像检索等项目可看我主页其他文章 功能演示&#xff08;看shi pin 下面的简介&#xff09;&#xff1a; https://www.bilibili.com/video/BV1DWXrBaE3Z/?spm_id_from333.1387.homepage.video_card.click&vd_source23c…...

行式存储(Row-based Storage)和列式存储(Column-base Storage)简介饲

1. 哑铃图是什么&#xff1f; 哑铃图&#xff08;Dumbbell Plot&#xff09;&#xff0c;有时也称为DNA图或杠铃图&#xff0c;是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中&#xff0c;我们通常使用两条折…...

2026年智能巡检管理系统如何让设备隐患无处遁形?

传统的设备巡检&#xff0c;本质上是一场“信任游戏”。我信任员工去看了&#xff0c;员工信任自己画了钩&#xff0c;结果往往是——等到设备真的坏了、管道真的漏了&#xff0c;翻开那本厚厚的巡检记录&#xff0c;上面依然写满了“正常”。直到我们引入了智能巡检管理系统&a…...

向量嵌入性能骤降70%?EF Core 10 + ANN索引配置错误全解析,含官方未文档化AsVectorSearch()调用约束

第一章&#xff1a;向量嵌入性能骤降70%&#xff1f;EF Core 10 ANN索引配置错误全解析&#xff0c;含官方未文档化AsVectorSearch()调用约束当升级至 EF Core 10 并启用向量相似性搜索时&#xff0c;大量开发者报告 AsVectorSearch() 查询响应时间激增、QPS 下跌近 70%&#…...

AI Coding越来越强,我们还有必要学Processing吗? · 创意编程挚

故障表现 发现请求集群 demo 入口时卡住&#xff0c;并且对应 Pod 没有新的日志输出 rootce-demo-1:~# kubectl get pods -n deepflow-otel-spring-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NO…...

Agent Client Protocol 全景解析涛

1. 核心概念 在 Antigravity 中&#xff0c;技能系统分为两层&#xff1a; Skills (全局库)&#xff1a;实际的代码、脚本和指南&#xff0c;存储在系统级目录&#xff08;如 ~/.gemini/antigravity/skills&#xff09;。它们是“能力”的本体。 Workflows (项目级)&#xff1a…...

OmniDB:现代化多数据库管理平台的架构演进与生产实践

OmniDB&#xff1a;现代化多数据库管理平台的架构演进与生产实践 【免费下载链接】OmniDB Web tool for database management 项目地址: https://gitcode.com/gh_mirrors/om/OmniDB 在当今数据驱动的技术环境中&#xff0c;数据库管理已成为开发团队和运维工程师面临的核…...

OFIRM,去感受宇宙之美的全貌!

奥卡姆剃刀&#xff0c;不增一分冗余&#xff1b;狄拉克&#xff0c;极致极简美学&#xff1b;我&#xff0c;多一个符号都是罪过&#xff01;多一个单词都是对宇宙之神的亵渎。【宇宙之美&#xff0c;大道至简&#xff0c;原来如此&#xff01;U(r,t)P{Φ(r,t)⊛⊂M,Ctotal(t)…...