【Qt之QLocale】使用

news2024/11/24 6:37:12

描述

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 == false
  d = QString("1234.56").toDouble(&ok);   // ok == true, d == 1234.56

  QLocale::setDefault(QLocale::German);
  d = QString("1234,56").toDouble(&ok);   // ok == true, d == 1234.56
  d = QString("1234.56").toDouble(&ok);   // ok == true, d == 1234.56

  QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
  str = QString("%1 %L2 %L3")
        .arg(12345).arg(12345).arg(12345, 0, 16);
  // str == "12345 12,345 3039"
  1. 在构造函数中指定语言/国家对时,会出现以下三种情况之一:
  • 如果语言/国家对在数据库中找到,则使用它。
  • 如果找到了语言但没有找到国家,或者国家为AnyCountry,则使用具有最合适的可用国家的语言(例如,对于德语,使用德国)。
  • 如果既没有找到语言也没有找到国家,则QLocale默认使用默认语言环境(参见setDefault())。
    可以使用()和country()来确定实际使用的语言和国家值。
  1. 另一种构造QLocale对象的方法是通过指定区域设置名称。
  QLocale korean("ko");
  QLocale swiss("de_CH");

该构造函数将区域设置名称转换为语言/国家对;它不使用系统的区域设置数据库。
注意:要获取当前键盘输入语言环境,请查看QInputMethod::locale()

常用函数

枚举
  1. Country { AnyCountry, Afghanistan, Albania, Algeria, …, SintMaarten }:国家/地区枚举类型

  2. CurrencySymbolFormat { CurrencyIsoCode, CurrencySymbol, CurrencyDisplayName }:货币符号格式枚举类型

  3. FloatingPointPrecisionOption { FloatingPointest }:浮点数精度选项枚举类型

  4. FormatType { LongFormat, ShortFormat, NarrowFormat }:格式类型枚举类型

  5. Language { AnyLanguage, C, Abazian, Oromo, …, UncodedLanguages }:语言枚举类型

  6. MeasurementSystem { MetricSystem, ImperialUSSystem, ImperialUKSystem, ImperialSystem }:计量系统枚举类型

  7. NumberOption { DefaultNumberOptions, OmitGroupSeparator, RejectGroupSeparator, OmitLeadingZeroInponent, …, RejectTrailingZeroesAfterDot }:数字选项枚举类型

  8. QuotationStyle { StandardQuotation, AlternateQuotation }:引用样式枚举类型

  9. 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; // 输出:星期一、星期二等(根据系统的默认区域设置)
    }

结果

在这里插入图片描述

使用场景

  1. 数字和字符串的格式化:QLocale可以将数字格式化为带有千位分隔符、小数位数和货币符号的字符串,也可以将字符串转换为数字。

  2. 日期和时间的格式化:QLocale可以将日期和时间格式化为特定的日期格式、时间格式和日期时间格式,以适应不同的地区和语言习惯。

  3. 货币格式化:QLocale支持将货币格式化为带有货币符号、千位分隔符和小数位数的字符串,并可以根据特定国家/地区的习惯进行舍入和舍入规则。

  4. 语言和地区设置:QLocale可以获取当前系统的默认区域设置信息,包括当前所使用的语言、国家/地区、货币和日期时间的格式等。

  5. 语言和地区的切换:QLocale使得应用程序可以根据用户的偏好在不同的语言和地区之间进行切换,以提供本地化的用户界面和内容。

总之,QLocale是一个重要的工具类,用于处理与地区相关的数据和操作,它可以帮助开发人员实现国际化和本地化的功能,使应用程序能够根据用户的语言和地区偏好提供适当的显示和格式。

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

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

相关文章

分布式:一文吃透分布式事务和seata事务

目录 一、事务基础概念二、分布式事务概念什么是分布式事务分布式事务场景CAP定理CAP理论理解CAPCAP的应用 BASE定理强一致性和最终一致性BASE理论 分布式事务分类刚性事务柔性事务 三、分布式事务解决方案方案汇总XA规范方案1&#xff1a;2PC第一阶段&#xff1a;准备阶段第二…

ubuntu部署个人网盘nextCloud使用docker-compose方式

概述 当下各大网盘的容量都是有限制的&#xff0c;而且xx云不开会员网速就拉跨。 所以就想搭建一个自己的盘&#xff0c;并且可以控制用户的权限分组&#xff1b; nextCloud就很合适 我这边都是自己用偶尔给其他人使用下&#xff0c;所以直接docker部署了。 ubuntu版本&…

【面试经典150 | 栈】逆波兰表达式求值

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;栈方法二&#xff1a;使用数组模拟栈 知识点拨两个概念中缀表达式转后缀表达式后缀表达式计算四则运算表达式例题 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文…

时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Python实现ARIM…

闭包的理解?一般使用场景

是什么 一个函数和对其周围状态(词法环境)的引用捆绑在一起(函数被引用包围)&#xff0c;这样的组合我们称之为闭包 也就是说&#xff0c;闭包让你可以在一个内层函数中访问到其外层函数的作用域 &#x1f356;在 JavaScript中&#xff0c;每当创建一个函数&#xff0c;闭包…

Java SE 学习笔记(十七)—— 单元测试、反射

目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概…

Java字节码创建对象指令

接上节。 示例代码&#xff1a; package com.lkl.jvmDemo;public class HelloByteCode {public static void main(String[] args) {HelloByteCode obj new HelloByteCode();} }查看字节码清单javap -c -verbose HelloByteCode Classfile /XXX/com/lkl/jvmDemo/HelloByteCod…

【电路笔记】-交流电阻和阻抗

交流电阻和阻抗 文章目录 交流电阻和阻抗1、概述&#xff1a;电阻率2、交流状态与直流状态近似性3、交流状态与直流状态的差异性3.1 趋肤效应(The Skin Effect)3.2 靠近效应&#xff08;The Proximity Effect&#xff09; 4、总结 电阻是一种特性&#xff0c;用于表征当电压差施…

2023最流行的自动化测试工具有哪些?

一&#xff1a;前言 随着测试工程师技能和工资待遇的提升&#xff0c;甚至有一部分的开发人员开始转入测试岗位&#xff0c;跨入自动化领域的测试攻城狮越来越多。在自动化测试领域&#xff0c;自动化工具肯定占据了核心的位置。 本文总结了常用的测试自动化工具和框架&#x…

【机器学习可解释性】5.SHAP值的高级使用

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.部分依赖图4.SHAP 值5.SHAP值的高级使用 正文 汇总SHAP值以获得更详细的模型解释 总体回顾 我们从学习排列重要性和部分依赖图开始&#xff0c;以显示学习后的模型的内容。 然后我们学习了SHAP值来分解单个预测的组成部…

汇编语言-div指令溢出问题

汇编语言-div指令溢出问题 8086CPU中被除数保存在ax(16位)或ax和dx&#xff08;32位&#xff09;中&#xff0c;如果被除数为16位&#xff0c;进行除法运算时al保存商&#xff0c;ah保存余数。如果被除数为32位时&#xff0c;进行除法运算时&#xff0c;ax保存商&#xff0c;d…

从最简单基本开始 or 把问题复杂化还自诩为“设计了一个可扩展的系统”?

文章目录 Intro程序员“把问题复杂化”的职业病如何抉择 Intro 刚才看了一段关于在苹果系统中使用numbers表格软件制作记账本的视频教程&#xff1a;当 Excel 交给苹果来设计会变成…&#xff1f;#Numbers 新手教学&#xff0c;以下为最终界面效果&#xff1a; 有些触动&…

网络原理续

传输层的协议也并非就只有UDP和TCP 就拿王者荣耀这个游戏来说 是否需要可靠性是否需要高效率 那是使用TCP还是UDP呢? 当然是都不用, 除了这两个协议外, 有的传输层协议就是为游戏场景量身打造的. 比如说以KCP为代表的一系列协议. 网络层 地址管理路由选择 网络层的代表:…

【FreeRTOS】

FreeRTOS 一、FreeRTOS任务创建和删除1.1 动态方式1.2 静态方式 二、任务挂起和恢复三、中断管理四、临界区保护及调度器的挂起和恢复五、列表项的插入和删除六、时间片调度七、任务状态查询API函数介绍7.1 任务状态查询API7.2 任务运行时间统计API 八、时间管理九、队列十、信…

SpringBoot小项目——简单的小区物业后台管理系统 认证鉴权 用户-角色模型 AOP切面日志 全局异常【源码】

目录 引出一、应用到的技术栈Spring、Spring MVC、Spring Boot基础SpringBoot进阶、SpringMVC原理、AOP切面MyBatis 数据库相关JavaWeb基础&#xff1a;Session等前端Vue、JavaScript、Bootstrap 二、后台管理系统的功能登录功能1.用户名密码登录2.验证码的登录 报修业务的处理…

【多线程面试题十】、说一说notify()、notifyAll()的区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说notify()、notify…

C++哈希表:一种快速查找和插入的方法

文章目录 1、前言2、unordered系列关联式容器2.1、 unordered_map2.1.1、unordered_map的文档介绍2.1.2、unordered_map的接口说明 2.2、 unordered_set 3. 底层结构3.1 哈希概念3.2 哈希冲突2.3 哈希函数2.4 哈希冲突解决2.4.1 闭散列2.4.2 开散列 4. 模拟实现4.1 哈希表的改造…

论文速递 TMC 2023 | RoSeFi: 一种利用商用WiFi设备进行稳健的久坐行为监测系统

注1:本文系“最新论文速览”系列之一,致力于简洁清晰地介绍、解读最新的顶会/顶刊论文 TMC 2023 | RoSeFi: 一种利用商用WiFi设备进行稳健的久坐行为监测系统 原文链接:https://ieeexplore.ieee.org/abstract/document/10269067 本文提出了一种稳健的久坐行为监测系统RoSeFi。…

ITSource 分享 第5期【校园信息墙系统】

项目介绍 本期给大家介绍一个 校园信息墙 系统&#xff0c;可以发布信息&#xff0c;表白墙&#xff0c;分享墙&#xff0c;校园二手买卖&#xff0c;咨询分享等墙信息。整个项目还是比较系统的&#xff0c;分为服务端&#xff0c;管理后台&#xff0c;用户Web端&#xff0c;小…

SHCTF 山河CTF Reverse方向[Week1]全WP 详解

文章目录 [WEEK1]ez_asm[WEEK1]easy_re[WEEK1]seed[WEEK1]signin[WEEK1]easy_math[WEEK1]ez_apk [WEEK1]ez_asm 从上往下读&#xff0c;第一处是xor 1Eh&#xff0c;第二处是sub 0Ah&#xff1b;逆向一下先加0A后异或1E 写个EXP data "nhuo[M7mc7uhc$7midgbTf7$7%#ubf7 …