Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。
今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语等。
开发环境(其实多语种这块根环境没太大关系):win10,Qt.5.12.10

一.先用QtCreator创建一个简单的桌面程序
1.工程就随便命名“LanguageTest”,其他默认。
2.在设计师界面,移除掉菜单栏和状态栏等乱七八糟的,编译一下,确保初始的工程正常。
初始的程序
3.现在我添加两个QLabel标签label1,和label2用于显示文字,两个按钮bt_CN和bt_EN用于语言切换。
在这里插入图片描述
4.工程文件.pro添加语言配置

#语言包,ts语言文件放置在工程目录下的“translate”文件夹中
TRANSLATIONS += \translate/LanguageTest_cn.ts \translate/LanguageTest_en.ts

在这里插入图片描述

4.使用Qt语言家生成ts语言文件
在QtCreator的菜单栏中,点击 “工具”->“外部”->“Qt语言家”->“更新翻译”,会在“translate”文件夹中生成中文和英语的的两个ts,文件。
在这里插入图片描述
在这里插入图片描述
5.使用Qt的Linguist工具来编辑语言库
根据你程序以后运行的环境(下图中可以看到Linguist工具有好几个,32位的,64位的,MSVC的,MinGW的),选择对应环境的Linguist工具打开。
在这里插入图片描述
打开语言家工具后,点击“文件”->“打开”,找到测试程序工程目录下的“translate”文件夹,将两个ts文件都选中。
在这里插入图片描述
出现弹框,选择好源语言和目标语言
在这里插入图片描述
6.编辑多语言
在Qt语言家中,按照翻译给你的文档,将对应的源文本翻译成各个语种。
在这里插入图片描述
完成后点击“文件”->“保存全部”->“发布全部”,会发现在“translate”文件夹中又生成了两个qm文件。qm文件就是后续程序发布时要附带的真正的语言包文件。
7.程序中加载qm语言包
(1).工程的main.cpp中自己顶一个函数添加语言的加载

#include "mainwindow.h"#include <QApplication>#include <QTranslator>
#include <QFileInfo>bool loadLanguageTranslator(QTranslator *trans)
{QString strLanguageValue;int nLanguage = 0;bool ret;QString strLanguagePath;switch (nLanguage) {case 0:default:// chinesestrLanguagePath = QCoreApplication::applicationDirPath() + "/translate/" + "LanguageTest_cn.qm";break;case 1:// EnglishstrLanguagePath = QCoreApplication::applicationDirPath() + "/translate/" + "LanguageTest_en.qm";break;}ret = trans->load(strLanguagePath);if (ret){qApp->installTranslator(trans);return true;}else{//出错return false;}
}int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;//载入语言包QTranslator trans;bool ret = loadLanguageTranslator(&trans);if (!ret){//出错}w.show();return a.exec();
}

你可以将"nLanguage "卸载配置文件中读取,这样你程序开启时,设置的"nLanguage "如果是0,就会自动显示为中文,如果是1就会自动显示为英文。
(2),在程序中添加即时切换
上面的代码智能在程序开启的时候转换语言,现在对两个按钮bt_CN和bt_EN操作,用于语言切换功能让程序再不关闭的情况下随时切换语言便显示切换效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/52253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国剩余定理和扩展中国剩余定理(模板)

给你一元线性同余方程组&#xff0c;如下&#xff1a; 其中&#xff0c;当 , , ... , 两两互质的话就是中国剩余定理 &#xff0c; 不互质的话就是扩展中国剩余定理。 给出中国剩余定理的计算过程和扩展中国剩余定理的推理过程&#xff1a; #include<bits/stdc.h> us…

让效率飞升的秘密武器

在当今高度竞争和信息密集的工作环境中&#xff0c;开发者的工作效率不仅仅取决于个人的编程能力&#xff0c;还依赖于所选择的编程工具。无论是智能的代码编辑器、强大的版本控制系统&#xff0c;还是自动化脚本和协作工具&#xff0c;它们都扮演着不可或缺的角色。如何正确选…

【秋招笔试】9.07滴滴秋招第一场改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集…

box64 安装

ARM运行x86程序 docker安装 box64 安装方法 docker run --name a001 -itd --networkhost -v /www/wwwroot/docker/Box64/f:/f ubuntu:22.04 /bin/bash docker exec -it a001 bash cd /home //创建目录qq547176052 mkdir -p qq547176052 cd /home/qq547176052 apt update apt …

WHAT - React 函数与 useMemo vs useCallback

目录 一、介绍useMemo 与 useCallback 的区别示例代码useMemo 示例useCallback 示例 总结 二、当一个函数被作为依赖项useMemo 和 useCallback 的适用情况选择使用 useCallback 或 useMemo总结实际例子 一、介绍 在 React 中&#xff0c;useMemo 和 useCallback 是两个用于性能…

新品上市丨科学级新款制冷相机sM4040A/sM4040B

sM4040B科学级显微制冷相机 特性 sM4040B搭载了 GSENSE4040BSI 3.2 英寸图像传感器&#xff0c;针对传感器固有的热噪声&#xff0c;专门设计了高效制冷模块&#xff0c;使得相机传感器的工作温度比环境温度低达 35-40 度。针对制冷相机常见的低温结雾现象设计了防结雾机制&a…

Notepad++ 下载安装教程

目录 1.下教程 2.安装教程 1.下教程 Downloads | Notepad (notepad-plus-plus.org) 进入下载地址后选择最新版点击连接 点击链接后&#xff0c;向下滑动&#xff0c;下载适合自己电脑版本的安装包 这里大家没有梯子可能打不开页面&#xff0c;可以直接从本文开头下载。 2.安…

阿里Java开发社会招聘面试题及参考答案

写一下修改库存的 SQL 语句 假设有一个商品库存表名为 product_inventory,包含字段 product_id(商品 ID)、quantity(库存数量)。 以下是一个简单的 SQL 语句示例,用于减少库存(假设购买一件商品): UPDATE product_inventory SET quantity = quantity - 1 WHERE produc…

实践reflex:以AI Chat APP为例

reflex demo 手册&#xff1a;Intro 以AI Chat APP为例 Interactive Tutorial: AI Chat App This tutorial will walk you through building an AI chat app with Reflex. This app is fairly complex, but dont worry - well break it down into small steps. You can find…

el-table 封装表格(完整代码-实时更新)

最新更新时间&#xff1a; 2024年9月6号 1. 添加行内编辑、表头搜索 <template><!-- 简单表格、多层表头、页码、没有合并列行 --><div class"maintenPublictable"element-loading-background"rgba(255,255,255,0.5)"><!--cell-sty…

新一代交互模式:LUICUIVUI

随着技术的发展&#xff0c;特别是人工智能和机器学习的进步&#xff0c;交互方式也在不断演变。以下是一些新概念&#xff0c;它们描述了当下和未来可能的交互方式&#xff1a; Conversational UI (CUI)&#xff1a; 以对话为基础的用户界面&#xff0c;用户通过自然语言与系统…

mysql数据库8.0小版本原地升级

mysql数据库8.0小版本原地升级 准备工作升级工作停库使用新版本软件启动数据库更新环境变量重启数据库 升级日志 OS release: CentOS 7.9升级前DB version: MySQL 8.0.30数据库升级安装包&#xff1a;mysql-8.0.36-linux-glibc2.12-x86_64.tar.xzMySQL Shell安装包&#xff1a;…

计算机网络(四) —— 简单Tcp网络程序

目录 一&#xff0c;服务器初始化 1.0 部分文件代码 1.1 关于Tcp协议 1.2 创建和绑定套接字 1.3 监听 二&#xff0c;服务器启动 2.1 获取连接 2.2 提供服务 2.3 客户端启动源文件 Main.cc 二&#xff0c;客户端编写 2.1 关于Tcp客户端 2.2 客户端代码 2.3 效果…

网络学习-eNSP配置多交换机VLAN

实验环境 通过华为eNSP软件实现 1.两台S3700交换机 2.四台电脑PC1&#xff1a;192.168.0.1PC2&#xff1a;192.168.0.2PC3&#xff1a;192.168.0.3PC4&#xff1a;192.168.0.4PC11&#xff1a;192.168.0.11PC22&#xff1a;192.168.0.22PC33&#xff1a;192.168.0.33PC44&…

win12R2安装.NET Framework 3.5

一丶安装原因 因此插件的缺失, 有些软件或系统不支持安装. 二丶安装步骤 1丶下载.NET Framework 3.5 点击插件下载, 提取码: 1995, 下载完成之后解压到想要安装的位置上. 2丶打开 服务器管理器 3丶点击: 管理 -> 添加角色和功能 4丶点击下一步到服务器角色, 选择web服…

IOS17.0安装巨魔:TrollRestore巨魔发布

&#x1f47b; TrollRestore 17.0 巨魔发布 15.0 - 16.7 RC&#xff08;20H18&#xff09;和17.0。 官网&#xff1a;https://trollrestore.com/ 下载&#xff1a;https://pan.metanetdisk.com/IOS/%E5%B7%A8%E9%AD%94%E7%8E%A9%E5%AE%B6/TrollRestore.com 使用&#xff1a;ht…

Java DAO 层:数据访问对象模式解析与实践

Java DAO 层&#xff1a;数据访问对象模式解析与实践 在软件开发中&#xff0c;数据访问层&#xff08;Data Access Object&#xff0c;简称DAO&#xff09;是一个至关重要的组件&#xff0c;它负责封装对数据源的所有访问。DAO 层的设计和实现对于提高应用程序的可维护性、可扩…

【技巧】Excel检查单元格的值是否在另一列中

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 用到的excel函数 IF(ISNUMBER(MATCH(H2, I2:I10, 0)), H2, "") 注意改上面的“H2、I2、I10”&#xff01; 函数效果 函数解释 检查单元格 …

指针与函数(一)

简介 C语言中,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个地址传递给函数,函数可以通过指针访问指针所指向的对象。同样,函数的返回值可以是整型、实型、字符型,也可以是指针类型。 一 .指针作函数的参数 指针作为函数的形参时,…

Keysight U8031A DC power supply

Keysight U8031A DC power supply 文章目录 Keysight U8031A DC power supply前言电容充电⽰意图一、恒定电压操作二、恒定电流操作三、5v操作四、跟踪模式操作五、存储器操作六、对过电压保护编程七、对过电流保护编程八、锁键操作 前言 U8031A Power Supply 是一款具备前面板…