【Qt之QLocale】使用
描述
QLocale类可以在多种语言之间进行数字和字符串的转换。
QLocale类在构造函数中使用语言/国家对进行初始化,并提供类似于QString中的数字转字符串和字符串转数字的转换函数。
示例:
QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 = egyptian.toString(1.571429E+07, 'e');QString s2 = egyptian.toString(10);double d = egyptian.toDouble(s1);int i = egyptian.toInt(s2);
QLocale支持默认语言环境的概念,该语言环境在应用程序启动时根据系统的语言环境设置确定。可以通过调用静态成员函数setDefault()来更改默认语言环境。
设置默认语言环境有以下效果:
如果使用默认构造函数创建QLocale对象,它将使用默认语言环境的设置。
QString::toInt()、QString::toDouble()等将根据默认语言环境解释字符串。如果解释失败,则返回"C"语言环境。
在格式字符串的位置说明符中包含’L’时,QString::arg()使用默认语言环境格式化数字,例如"%L1"。
以下示例说明了如何直接使用QLocale:
QLocale::setDefault(QLocale(QLocale::Hebrew, QLocale::Israel));QLocale hebrew; // 构造一个默认的QLocale对象QString s1 = hebrew.toString(15714.3, 'e');bool ok;double d;QLocale::setDefault(QLocale::C);d = QString("1234,56").toDouble(&ok); // ok == falsed = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56QLocale::setDefault(QLocale::German);d = QString("1234,56").toDouble(&ok); // ok == true, d == 1234.56d = QString("1234.56").toDouble(&ok); // ok == true, d == 1234.56QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));str = QString("%1 %L2 %L3").arg(12345).arg(12345).arg(12345, 0, 16);// str == "12345 12,345 3039"
- 在构造函数中指定语言/国家对时,会出现以下三种情况之一:
- 如果语言/国家对在数据库中找到,则使用它。
- 如果找到了语言但没有找到国家,或者国家为
AnyCountry,则使用具有最合适的可用国家的语言(例如,对于德语,使用德国)。 - 如果既没有找到语言也没有找到国家,则
QLocale默认使用默认语言环境(参见setDefault())。
可以使用()和country()来确定实际使用的语言和国家值。
- 另一种构造QLocale对象的方法是通过指定区域设置名称。
QLocale korean("ko");QLocale swiss("de_CH");
该构造函数将区域设置名称转换为语言/国家对;它不使用系统的区域设置数据库。
注意:要获取当前键盘输入语言环境,请查看QInputMethod::locale()。
常用函数
枚举
-
Country { AnyCountry, Afghanistan, Albania, Algeria, …, SintMaarten }:国家/地区枚举类型 -
CurrencySymbolFormat { CurrencyIsoCode, CurrencySymbol, CurrencyDisplayName }:货币符号格式枚举类型 -
FloatingPointPrecisionOption { FloatingPointest }:浮点数精度选项枚举类型 -
FormatType { LongFormat, ShortFormat, NarrowFormat }:格式类型枚举类型 -
Language { AnyLanguage, C, Abazian, Oromo, …, UncodedLanguages }:语言枚举类型 -
MeasurementSystem { MetricSystem, ImperialUSSystem, ImperialUKSystem, ImperialSystem }:计量系统枚举类型 -
NumberOption { DefaultNumberOptions, OmitGroupSeparator, RejectGroupSeparator, OmitLeadingZeroInponent, …, RejectTrailingZeroesAfterDot }:数字选项枚举类型 -
QuotationStyle { StandardQuotation, AlternateQuotation }:引用样式枚举类型 -
Script { AnyScript, AdlamScript, AhomScript, AnatolianHieroglyphsScript, YiScript }:脚本枚举类型
公有方法
-
QLocale():默认构造函数。 -
QLocale(const QString &name):通过区域的BCP-47名称来构造QLocale对象。 -
QLocale(Language language, Country country = AnyCountry):通过语言和国家/地区来构造QLocale对象。 -
QLocale(Language language, Script script, Country country):通过语言、脚本和国家/地区来构造QLocale对象。 -
QLocale(const QLocale &other):拷贝构造函数。 -
~QLocale():析构函数。 -
QString amText() const:获取上午的文本表示。 -
QString bcp47Name() const:获取BCP-47格式的名称。 -
Country country() const:获取国家/地区。 -
QString createSeparatedList(const QStringList &list) const:将列表中的字符串用适当的分隔符连接起来。 -
QString currencySymbol(CurrencySymbolFormat format = CurrencySymbol) const:获取货币符号。 -
QString dateFormatFormatType format = LongFormat) const:获取日期格式。 -
`QString dateTimeFormat(FormatType format = LongFormat) const:获取日期和时间格式。
-
QString dayName(int day, FormatType type = LongFormat) const:获取星期几的名称。 -
QChar decimalPoint() const:获取小数点符号。 -
QChar exponential() const:获取科学计数法表示中的指数符号。 -
Qt::DayOfWeek firstDayOfWeek() const:获取星期的第一天。 -
QChar groupSeparator() const:获取千位分隔符。 -
Language language() const:获取语言。 -
MeasurementSystem measurementSystem() const:获取测量系统。 -
QString monthName(int month, FormatType type = LongFormat) const:获取月份的名称。 -
QString name() const:获取区域的名称。 -
QString nativeCountryName() const:获取本地化的国家/地区名称。 -
QString nativeLanguageName() const:获取本地化的语言名称。 -
QChar negativeSign() const:获取负号符号。 -
NumberOptions numberOptions() const:获取数字显示的选项。 -
QChar percent() const:获取百分号符号。 -
QString pmText() const:获取下午的文本表示。 -
QChar positiveSign() const:获取正号符号。 -
QString quoteString(const QString &str, QuotationStyle style = StandardQuotation) const:将字符串用引号括起来。 -
QString quoteString(const QStringRef &str, QuotationStyle style = StandardQuotation) const:将字符串引用用引号括起来。 -
Script script() const获取脚本。 -
void setNumberOptions(NumberOptions options)设置数字显示的选项。 -
QString standaloneDayName(int day, FormatType type = LongFormat) const获取独立的星期几的名称。 -
QString standaloneMonthName(int month, FormatType type = LongFormat) const获取独立的月份的名称。 -
void swap(QLocale &other)交换两个QLocale对象的内容。 -
Qt::LayoutDirection textDirection() const获取文本的布局方向。 -
QString timeFormat(FormatType format = LongFormat) const获取时间格式。 -
QString toCurrencyString(qlonglong value, const QString &symbol = QString()) const将长整型数值转换为货币字符串。 -
QString toCurrencyString(qulonglong value, const QString &symbol = QString()) const将无符号长整型数值转换为货币字符串。 -
QString toCurrencyString(short value, const QString &symbol = QString()) const将短整型数值转换为货币字符串。 -
QString toCurrencyString(ushort value, const QString &symbol = QString()) const将无符号短整型数值转换为货币字符串。 -
QString toCurrencyString(int value, const QString &symbol = QString()) const将整型数值转换为货币字符串。 -
QString toCurrencyString(uint value, const QString &symbol = QString()) const将无符号整型数值转换为货币字符串。 -
QString toCurrencyString(double value, const QString &symbol = QString()) const将双精度浮点数值转换为货币字符串。 -
QString toCurrencyString(double value, const QString &symbol, int precision) const将双精度浮点数值以指定精度转换为货币字符串。 -
QString toCurrencyString(float value, const QString &symbol = QString()) const将单精度浮点数值转换为货币字符串。 -
QString toCurrencyString(float value, const QString &symbol, int precision) const将单精度浮点数值以指定精度转换为货币字符串。 -
QDate toDate(const QString &string, FormatType format = LongFormat) const将字符串转换为日期。 -
QDate toDate(const QString &string, const QString &format) const将字符串按指定格式转换为日期。 -
QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const将字符串转换为日期和时间。 -
QDateTime toDateTime(const QString &string, const QString &format) const将字符串按指定格式转换为日期和时间。 -
double toDouble(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为双精度浮点数。 -
double toDouble(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为双精度浮点数。 -
float toFloat(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为单精度浮点数。 -
float toFloat(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为单精度浮点数。 -
int toInt(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为整型数。 -
int toInt(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为整型数。 -
qlonglong toLongLong(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为长整型数。 -
qlonglong toLongLong(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为长整型数。 -
QString toLower(const QString &str) const将字符串转换为小写形式。 -
short toShort(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为短整型数。 -
short toShort(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为短整型数。 -
QString toString(qlonglong i) const将长整型数转换为字符串。 -
QString toString(qulonglong i) const将无符号长整型数转换为字符串。 -
QString toString(short i) const将短整型数转换为字符串。 -
QString toString(ushort i) const将无符号短整型数转换为字符串。 -
QString toString(int i) const将整型数转换为字符串。 -
QString toString(uint i) const将无符号整型数转换为字符串。 -
QString toString(double i, char f = 'g', int prec = 6) const将双精度浮点数转换为字符串。 -
QString toString(float i, char f = 'g', int prec = 6) const将单精度浮点数转换为字符串。 -
QString toString(const QDate &date, const QString &format) const将日期按指定格式转换为字符串。 -
QString toString(const QDate &date, FormatType format = LongFormat) const将日期转换为字符串。 -
QString toString(const QTime &time, const QString &format) const将时间按指定格式转换为字符串。 -
QString toString(const QTime &time, FormatType format = LongFormat) const将时间转换为字符串。 -
QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const将日期和时间转换为字符串。 -
QString toString(const QDateTime &dateTime, const QString &format) const将日期和时间按指定格式转换为字符串。 -
QTime toTime(const QString &string, FormatType format = LongFormat) const将字符串转换为时间。 -
QTime toTime(const QString &string, const QString &format) const将字符串按指定格式转换为时间。 -
uint toUInt(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为无符号整型数。 -
uint toUInt(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为无符号整型数。 -
qulonglong toULongLong(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为无符号长整型数。 -
qulonglong toULongLong(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为无符号长整型数。 -
ushort toUShort(const QString &s, bool *ok = Q_NULLPTR) const将字符串转换为无符号短整型数。 -
ushort toUShort(const QStringRef &s, bool *ok = Q_NULLPTR) const将字符串引用转换为无符号短整型数。 -
QString toUpper(const QString &str) const将字符串转换为大写形式。 -
QStringList uiLanguages() const获取支持的UI语言列表。 -
QList<Qt::DayOfWeek weekdays() const获取一周的星期几列表。 -
QChar zeroDigit() const获取零字符。 -
bool operator!=(const QLocale &other) const判断两个QLocale对象是否不相等。 -
QLocale &operator=(QLocale &&other)将一个QLocale对象的内容移动赋值给当前对象。 -
QLocale &operator=(const QLocale &other)将一个QLocale对象的内容复制给当前对象。 -
bool operator==(const QLocale &other) const判断两个QLocale对象是否相等。
示例
// 获取系统的默认区域设置QLocale locale = QLocale::system();// 将数字转换为字符串int number = 123456;QString numberString = locale.toString(number);qDebug() << "Number:" << numberString; // 输出:"Number: 123,456"(如果系统的默认区域设置是中文或其他使用逗号作为千位分隔符的语言)// 将字符串转换为数字QString numberString2 = "987,654.32";double number2 = locale.toDouble(numberString2);qDebug() << "Number2:" << number2; // 输出:"Number2: 987654.32"// 格式化日期和时间QDateTime dateTime = QDateTime::currentDateTime();QString formattedDateTime = locale.toString(dateTime, "yyyy-MM-dd hh:mm:ss");qDebug() << "Formatted DateTime:" << formattedDateTime; // 输出:"Formatted DateTime: 2023-10-29 11:31:33"// 获取星期几的名称for (int i = Qt::Monday; i <= Qt::Sunday; i++) {Qt::DayOfWeek dayOfWeek = static_cast<Qt::DayOfWeek>(i);QString dayName = locale.standaloneDayName(dayOfWeek, QLocale::ShortFormat);qDebug() << "Day Name:" << dayName; // 输出:星期一、星期二等(根据系统的默认区域设置)}
结果

使用场景
-
数字和字符串的格式化:QLocale可以将数字格式化为带有千位分隔符、小数位数和货币符号的字符串,也可以将字符串转换为数字。
-
日期和时间的格式化:QLocale可以将日期和时间格式化为特定的日期格式、时间格式和日期时间格式,以适应不同的地区和语言习惯。
-
货币格式化:QLocale支持将货币格式化为带有货币符号、千位分隔符和小数位数的字符串,并可以根据特定国家/地区的习惯进行舍入和舍入规则。
-
语言和地区设置:QLocale可以获取当前系统的默认区域设置信息,包括当前所使用的语言、国家/地区、货币和日期时间的格式等。
-
语言和地区的切换:QLocale使得应用程序可以根据用户的偏好在不同的语言和地区之间进行切换,以提供本地化的用户界面和内容。
总之,QLocale是一个重要的工具类,用于处理与地区相关的数据和操作,它可以帮助开发人员实现国际化和本地化的功能,使应用程序能够根据用户的语言和地区偏好提供适当的显示和格式。
相关文章:
【Qt之QLocale】使用
描述 QLocale类可以在多种语言之间进行数字和字符串的转换。 QLocale类在构造函数中使用语言/国家对进行初始化,并提供类似于QString中的数字转字符串和字符串转数字的转换函数。 示例: QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 …...
维修服务预约小程序的效果如何
生活服务中维修项目绝对是需求量很高的,如常见的保洁、管道疏通、数码维修、安装、便民服务等,可以说每天都有生意,而对相关维修店企业来说,如何获得更多生意很重要。 接下来让我们看看通过【雨科】平台制作维修服务预约小程序能…...
前端架构体系调研整理汇总
1.公司研发人数与前端体系 小型创业公司 前端人数: < 3 人 产品类型: 产品不是非常成熟,比较新颖。 项目流程:不完善,快、紧促,没有固定的时间排期。 技术栈: 没有历史包袱,技…...
DrawerLayout的点击事件会穿透到底部,如何拦截?
DrawerLayout实现侧后,发现了一个问题。点击DrawerLayout的画面,会触发覆盖的底层页面的控件。由此说明点击事件穿透到了底部。但是我只需要触发抽屉布局里的控件,不想触发底层被覆盖的看不见的按钮,由此我想到的时让抽屉页面拦截…...
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证 一、登录获得JWT 在navicat中运行如下sql,准备一张user表 -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS t_user; CREATE TABLE t_user (id int(11) …...
天堂2如何对版本里面的内容进行修改
天堂2写装备属性的问题 早一点的版本属性都是写在armor文件夹 xml档里,不再写armor里了 armor文件夹里只有防御 HP MP增加量,套装的属性都用一个技能形式写在 skills里了 在配合数据库里一个叫armorsets实现套装属性,拿皇家套做说明。 id 43…...
代码随想录Day33 LeetCode T62不同路径 LeetCode T63 不同路径II
前言 动规五部曲 1.确定dp数组含义 2.确定递推公式 3.初始化数组 4.确定遍历方式 5.打印dp数组查看分析问题 LeetCode T62 不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 题目思路: 注:n行m列而不是m行n列 1.确定dp数组含义 代表到达此下标有多少条…...
【计算机网络】分层模型和应用协议
网络分层模型和应用协议 1. 分层模型 1.1 五层网络模型 网络要解决的问题是:两个程序之间如何交换数据。 四层?五层?七层? 2. 应用层协议 2.1 URL URL(uniform resource locator,统一资源定位符&#…...
Python框架之Flask入门和视图
一、Flask入门和视图 需要安装Pycharm专业版 1. Flask简介 Python后端的2个主流框架 Flask 轻量级框架Django 重型框架 Flask是一个基于Python实现的web开发微框架 官方文档:https://flask.palletsprojects.com/ 中文文档:https://dormousehole.readthe…...
streamWriter.WriteLine
streamWriter.WriteLine写入文件有回车行 using (System.IO.StreamWriter streamWriter new System.IO.StreamWriter("D:\123.txt", false, System.Text.Encoding.Default)) { streamWriter.Write(str.Replace("…...
一键添加色彩变幻效果,视频剪辑从未如此简单!
在视频制作过程中,给视频添加特效是必不可少的环节。而其中,色彩变幻效果作为一种常用的特效,能够为视频增添独特的氛围和视觉冲击力。然而,对于许多初学者来说,如何批量给视频添加色彩变幻效果特效功能却是一个难题。…...
Linux的简介和环境搭建
简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个…...
你看现在的程序员,是怎么解bug的
大家好,我是伍六七。 干程序员的都会碰到各种各样的 bug,有的 bug 我们看一眼、或者多看几眼就能看出来问题。 但是,也有很多问题,我们看不出来,这个时候,我们不妨把我们的代码扔给 GPT,看看它…...
CSS3背景样式
在CSS 2.1中,background属性的功能还无法满足设计的需求,为了方便设计师更灵活地设计需要的网页效果,CSS3在原有background基础上新增了一些功能属性,可以在同一个对象内叠加多个背景图像,可以改变背景图像的大小尺寸&…...
JAVA同城服务同城圈子真人躲猫猫系统的玩法流程
在现在科技的发展和互联网的普及,线上社交游戏在人们的生活中占据了越来越重要的地位。JAVA同城服务同城圈子真人躲猫猫系统就是一种结合了线上社交和线下实体位置服务的全新游戏模式。在这个游戏中,玩家们可以在同一城市中寻找隐藏的对手,体…...
C++继承——圆形和圆柱体
C继承 Circular圆形类 /*圆形类*/ class Circular { private:const static double PI;double R 0; public:Circular() default;Circular(double r);double GetArea(); /*圆面积*/double GetGirth(); /*圆周长*/ }; const double Circular::PI 3.14;Circular::Circula…...
致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC]
文章目录 致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远OA wpsAssistServlet任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用…...
Java规则引擎2.1.8版本新增功能说明
规则引擎更新功能 新增: 1.决策结束节点新增结果导出excel功能; 在决策流程的结束节点,可以将决策结果导出为Excel文件。这个功能为用户提供了更多的灵活性和便利性,使他们能够轻松地将决策结果数据进行进一步的分析和处理。 2.新增公有变…...
系列四十、请谈一下Spring中事务的传播行为
一、概述 事务的传播行为指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。事务的传播行为至少发生在两个事务方法的嵌套调用中才会出现。 二、传播行为分类...
kubectl详解
陈述式资源管理方法: 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
