Qt 项目(CMake)支持多国语言(2024/05)

ops/2024/9/20 7:28:18/ 标签: qt, 开发语言

目录

  • 1.在工程手动创建`languages`文件夹
  • 2.修改`CMakeLists.txt`
  • 3.在qml上随便添加一下文字内容
  • 4.`执行CMake`
  • 5.把`.ts`和`.qm`添加到项目中
  • 6.翻译成英文的示例
  • 7.在main里面加载语言文件
  • 8.启动软件自动获取电脑的语言
  • 遗留问题

参考:Qt 项目(CMake)设置国际化支持

1.在工程手动创建languages文件夹

在这里插入图片描述

2.修改CMakeLists.txt

set(TS_FILES"${CMAKE_SOURCE_DIR}/languages/aidi_zh_CN.ts""${CMAKE_SOURCE_DIR}/languages/aidi_en_US.ts"
)# 模拟更新和发布的命令代码
find_program(LUPDATE_EXECUTABLE lupdate)
find_program(LRELEASE_EXECUTABLE lrelease)# 生成ts和qm文件
foreach(_ts_file ${TS_FILES})execute_process(COMMAND ${LUPDATE_EXECUTABLE} -recursive ${CMAKE_SOURCE_DIR} -ts ${_ts_file})execute_process(COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file})
endforeach()

3.在qml上随便添加一下文字内容

例如:

import QtQuick 2.15
import QtQuick.Window 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")Column {id: columny: 20spacing: 20//子项之间的间距Text {id:sfsdtext: qsTr("苹果")}Text {text: qsTr("香蕉")}Text {text: qsTr("西瓜")}}
}

文本需要使用qsTr( )包裹

4.执行CMake

在这里插入图片描述

5.把.ts.qm添加到项目中

在这里插入图片描述

6.翻译成英文的示例

选中.ts文件,使用Qt语言家打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.在main里面加载语言文件

#include <QTranslator>
    QTranslator qtTranslator;qtTranslator.load(":/languages/aidi_en_US.qm");//英文// qtTranslator.load(":/languages/aidi_zh_CN.qm");//中文app.installTranslator(&qtTranslator);

效果
在这里插入图片描述
在这里插入图片描述

8.启动软件自动获取电脑的语言

    QLocale::Language lab = QLocale::system().language();if(QLocale::Chinese == lab){qDebug() << "电脑系统用的是中文n" ;}else if(QLocale::English== lab){qDebug() << "电脑系统用的是英文n" ;}

遗留问题

我只是实现了在main()函数里加载语言,

如果在程序中修改语言->记录语言配置->需要将程序重启->再加载相应的语言文件

如何实现修改语言,可以立马生效的方法,知道的欢迎在评论区留言!


http://www.ppmy.cn/ops/46554.html

相关文章

Charles的安装和web端抓包配置

1.Charles的安装 通过官网下载&#xff1a;https://www.charlesproxy.com/download/&#xff0c;我之前下载的是4.6.2版本&#xff0c;下载成功后点击安装包&#xff0c;点击下一步下一步即可安装成功。 ​​ ​ 安装成功后打开charles页面如下所示。 ​ 2.乱码问题解决 打开…

echarts 地图

2024.5.27今天我学习如何用echarts做一个地图组件&#xff0c;效果如下&#xff1a; 主要三步&#xff1a; 1.获取地图JSON文件 &#xff08;注意&#xff1a;该工具获取不到乡镇级别数据&#xff09; DataV.GeoAtlas地理小工具系列 2.引入该JSON文件并注册 &#xff08;所有…

Dolphinscheduler不重启加载Oracle驱动

转载自刘茫茫看山 问题背景 某天我们的租户反馈数据库连接缺少必要的驱动&#xff0c;我们通过日志查看确实是缺少部分数据库的驱动&#xff0c;因为DolphinScheduler默认只带了Oracle和MySQL的驱动&#xff0c;并且需要将pom文件中的test模式去掉才可以在打包的时候引入。我…

LRU算法

文章目录 LRU算法LRU 如何实现LinkedHashMap来实现的LRU算法的缓存HashMap实现LRU算法的缓存 LRU算法 LRU&#xff08;Least Recently Used&#xff09;算法可以使用哈希表和双向链表来实现。哈希表用于快速查找数据&#xff0c;双向链表用于记录数据的访问顺序。以下是LRU算法…

详解 Scala 的泛型

一、协变与逆变 1. 说明 协变&#xff1a;Son 是 Father 的子类&#xff0c;则 MyList[Son] 也作为 MyList[Father] 的 “子类”逆变&#xff1a;Son 是 Father 的子类&#xff0c;则 MyList[Son] 作为 MyList[Father] 的 “父类”不变&#xff1a;Son 是 Father 的子类&…

vue3 todolist 简单例子

vue3 简单的TodList 地址&#xff1a; https://gitee.com/cheng_yong_xu/vue3-composition-api-todo-app-my 效果 step-1 初始化项项目 我们不采用vue cli 搭建项目 直接将上图文件夹&#xff0c;复制到vscode编辑器&#xff0c;清空App.vue的内容 安装包 # 安装包 npm…

深入理解文件系统和日志分析

文件是存储在硬盘上的&#xff0c;硬盘上的最小存储单位是扇区&#xff0c;每个扇区的大小是512字节。 inode&#xff1a;存储元信息&#xff08;包括文件的属性&#xff0c;权限&#xff0c;创建者&#xff0c;创建日期等等&#xff09; block&#xff1a;块&#xff0c;连续…

C++17之std::void_t

目录 1.std::void_t 的原理 2.std::void_t 的应用 2.1.判断成员存在性 2.1.1.判断嵌套类型定义 2.1.2 判断成员是否存在 2.2 判断表达式是否合法 2.2.1 判断是否支持前置运算符 2.2.3 判断两个类型是否可做加法运算 3.std::void_t 与 std::enable_if 1.std::void_t 的…

软考 系统架构设计师之考试感悟2

接前一篇文章&#xff1a;软考 系统架构设计师之考试感悟 今天是2024年5月25号&#xff0c;是个人第二次参加软考系统架构师考试的正日子。和上次一样&#xff0c;考了一天&#xff0c;身心俱疲。天是阴的&#xff0c;心是沉的&#xff0c;感觉比上一次更加沉重。仍然有诸多感悟…

自然语言处理(NLP)—— 神经网络语言处理

1. 总体原则 1.1 深度神经网络&#xff08;Deep Neural Network&#xff09;的训练过程 下图展示了自然语言处理&#xff08;NLP&#xff09;领域内使用的深度神经网络&#xff08;Deep Neural Network&#xff09;的训练过程的简化图。 在神经网络的NLP领域&#xff1a; 语料…

mysql面试之分库分表总结

文章目录 1.为什么要分库分表2.分库分表有哪些中间件&#xff0c;不同的中间件都有什么优点和缺点&#xff1f;3.分库分表的方式(水平分库,垂直分库,水平分表,垂直分表)3.1 水平分库3.2 垂直分库3.3 水平分表3.4 垂直分表 4.分库分表带来的问题4.1 事务一致性问题4.2 跨节点关联…

[Qt]关于QListWidget、QScrollArea 为什么在QDesigner上设置了之后界面上仍然不生效的问题

前言 最近做了一些有关QListWidget和QScrollArea的控件&#xff0c;我去&#xff0c;这两个控件是真的坑&#xff0c;明明我在QDesigner的操作界面上对这两个控件的界面进行了修改&#xff0c;但是编译出来的软件就是看上去什么都没有&#xff0c;很坑&#xff0c;Gpt也没解决…

【CC2530-操作外部flash】

zigbee cc2530操作flash&#xff0c;以cc2530读flash_id为例子&#xff1b; void InitIO() {CLKCONCMD & ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD & ~0x47; //设置系统主时钟频率为32MHZ…

zabbix事件告警监控:如何实现对相同部件触发器告警及恢复的强关联

有一定Zabbix使用经验的小伙伴可能会发现&#xff0c;接收告警事件时&#xff0c;其中可能包含着大量不同的部件名&#xff0c;同一部件的事件在逻辑上具有很强关联性&#xff0c;理论上应保持一致的告警/恢复状态&#xff0c;但Zabbix默认并未对它们进行关联&#xff0c;直接后…

共筑信创新生态:DolphinDB 与移动云 BC-Linux 完成兼容互认

近日&#xff0c;DolphinDB 数据库软件 V2.0 与中国移动通信集团公司的移动云天元操作系统 BC-Linux 完成兼容性适配认证。经过双方共同严格测试&#xff0c;DolphinDB 性能及稳定性等各项指标表现优异&#xff0c;满足功能及兼容性测试要求。 此次 DolphinDB 成功通过移动云 B…

【TB作品】msp430g2553,读取SHT31,读取gy-30,显示到lcd12864,温度湿度光强

功能 msp430g2553&#xff0c;读取SHT31&#xff0c;读取gy-30&#xff0c;显示到lcd12864 硬件 /* 12864液晶串行显示测试程序P1.4模拟SID&#xff08;接第5脚&#xff09;&#xff0c;P1.5模拟SCLK&#xff08;接第6脚&#xff09;4脚&#xff08;CS信号&#xff09;接高…

Spring源码之BeanDefinition的加载

Spring源码之BeanFactory和BeanDefinition BeanFactory和BeanDefinitionBeanFactoryBeanDefinition源码分析创建AnnotationConfigApplicationContext对象注册配置类refresh方法 BeanFactory和BeanDefinition BeanFactory BeanFactory是Spring提供给外部访问容器的根接口&…

PbootCMS后台用户账号密码时进行重置工具

1、工具作用: 工具用于忘记PbootCMS后台用户账号密码时进行重置。 2、下载地址&#xff1a;https://pan.quark.cn/s/2b017974f2c0 3、使用方法&#xff1a; 1&#xff09;下载重置工具解压包&#xff0c;解压后将resetpw.php文件直接上传到网站根目录下&#xff1b; 2&…

【C++】多态:编程中的“一人千面”艺术

目录 一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数的重写2.1 什么是虚函数&#xff1f;2.2 虚函数的重写是什么&#xff1f;2.3 虚函数重写的两个例外2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类3.1 概念3.2 接口继承和实现…

tcpdump抓包,抓包导出.pcap文件用wireshark看

1、抓所有口的包 tcpdump -i any host 设备的ip2、抓特定口的包 tcpdump -i eth2 port 61182 -nne3、将抓到的包导出到pacb文件 tcpdump -i eth2 port 61182 -nne -s0 -w /tmp/61182.pcap -s0: Sets the snapshot length to capture the entire packet. The 0 means that tcpd…