Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)实战

本文主要是介绍Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

使用Qt的时候,经常会遇到英文问题,例如:QMessageBox中的按钮、QLineEdit、QSpinBox、QScrollBar中的右键菜单等。通常情况下,我们软件都不会是纯英文的,那么如何处理这些问题呢?其实这也属于国际化的一部分。

这里写图片描述 这里写图片描述 这里写图片描述

下面,以中英文切换为例来为大家分享,其它语言切换类似。

  • 简介
  • 查找翻译文件
  • 加载翻译文件
  • 切换语言

查找翻译文件

  • qt_zh_CN.qm

见名知义,这正是处理中文的翻译文件。

我们可以从Qt的安装目录中找到它,以我的目录为例:D:\Qt\Qt5.5.1\5.5\msvc2013\translations。

如果没有此文件,不用着急,我们可以查找此文件对应的翻译源qt_zh_CN.ts。然后使用lrelease,生成对应的qt_zh_CN.qm文件。

加载翻译文件

QTranslator translator;  
translator.load(":/qm/qt_zh_CN.qm");  
qApp->installTranslator(&translator); 

有点意思,这样很快的就处理为中文了。

这里写图片描述 这里写图片描述 这里写图片描述

切换语言

加载为中文之后,假设我们存在多语言切换问题,那么当我把语言切换为中文后,之前的qt_zh_CN.qm已经加载了,如何再切换回来呢?

好了,既然存在load,那么不出意外地话也会存在unload吧。不好意思,翻完所有的API我们并没有发现此接口!

继续分析,installTranslator是安装翻译文件的意思,那么我们可以想办法把它卸载掉,通过查找我们很容易发现removeTranslator接口。

官网对此接口的的解释为:Removes the translation file translationFile from the list of translation files used by this application. (It does not delete the translation file from the file system.)

也就是说:从翻译文件列表中移除翻译文件后,并没有从文件系统中删除翻译文件。

那么也就是说,通过调用此接口,就可以移除翻译文件了。翻译文件一旦被移除,那么之前所加载的对应语言也就无效了。

if (language != MyApp::English)
{m_systemTranslator.load(QString(":/qm/qt_zh_CN.qm"));qApp->installTranslator(&translator);
}
else
{qApp->removeTranslator(&translator);
}

如上,切换语言的时候判断当前语言,如果为中文则加载qt_zh_CN.qm翻译文件,然后安装翻译器。否则,进行卸载!

这样,加载对应语言的时候,无论是自定义的文本,还是系统文本,我们都可以自由的切换了。

这篇关于Qt国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/393692

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo