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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

淘宝价格监控-电商数据采集分析

一、什么是淘宝商品数据采集&#xff1f; 淘宝商品数据采集&#xff0c;顾名思义&#xff0c;就是通过技术手段对全网电商平台上的商品价格信息进行抓取并保存。通过将收集到的这些价格信息进行分析处理后得到该商品的成交价、折扣率等关键属性指标&#xff0c;从而为卖家提供…

从零开始的目标检测和关键点检测(一):用labelme标注数据集

从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 1、可视化标注结果2、划分数据集3、Lableme2COCO&#xff0c;将json文件转换为MS COCO格式 前言&#xff1a;前段时间用到了mmlab的mmdetction和mmpose&#xff0c;因此以一个小的数…

Thread

Thread 线程启动线程第一种创建线程线程的第二种创建方式使用匿名内部类完成线程的两种创建 Thread API线程的优先级线程提供的静态方法守护线程用户线程和守护线程的区别体现在进程结束时 多线并发安全问题同步块 线程 启动线程 启动线程:调用线程的start方法,而不是直接调用…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标&#xff0c;y1和y2列分别为纵坐标画折线图。 选择插入-》图表&#xff1a; 选择折线图-》点和线&#xff0c;然后点击“下一步”&#xff1a; 选择&#xff1a;列中包含数据序列&#xff0c;然后点击完成&#xff08;因为图挡住了数据…

MySQL系列-架构体系、日志、事务

MySQL架构 server 层 &#xff1a;层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xff08;如日期、时间、数学和加密函数等&#xff09;&#xff0c;所有跨存储引擎的功能都在这一层实现&am…

Qt 项目实战 | 俄罗斯方块

Qt 项目实战 | 俄罗斯方块 Qt 项目实战 | 俄罗斯方块游戏架构实现游戏逻辑游戏流程实现基本游戏功能设计小方块设计方块组添加游戏场景添加主函数 测试踩坑点1&#xff1a;rotate 失效踩坑点2&#xff1a;items 方法报错踩坑点3&#xff1a;setCodecForTr 失效踩坑点4&#xff…

蓝桥杯刷题

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; &#x1f449;&#x1f3fb;最大降雨量 原题链接&#xff1…

OpenCV官方教程中文版 —— 分水岭算法图像分割

OpenCV官方教程中文版 —— 分水岭算法图像分割 前言一、原理二、示例三、完整代码 前言 本节我们将要学习 • 使用分水岭算法基于掩模的图像分割 • 函数&#xff1a;cv2.watershed() 一、原理 任何一副灰度图像都可以被看成拓扑平面&#xff0c;灰度值高的区域可以被看成…

Hand Avatar: Free-Pose Hand Animation and Rendering from Monocular Video

Github&#xff1a; https://seanchenxy.github.io/HandAvatarWeb 1、结构摘要 MANO-HD模型&#xff1a;作为高分辨率网络拓扑来拟合个性化手部形状将手部几何结构分解为每个骨骼的刚性部分&#xff0c;再重新组合成对的几何编码&#xff0c;得到一个跨部分的一致占用场纹理建…

2.数据结构-链表

概述 目标 链表的存储结构和特点链表的几种分类及各自的存储结构链表和数组的差异刷题(反转链表) 概念及存储结构 先来看一下动态数组 ArrayList 存在哪些弊端 插入&#xff0c;删除时间复杂度高需要一块连续的存储空间&#xff0c;对内存要求比较高&#xff0c;比如要申请…

CentOS 安装 Hadoop Local (Standalone) Mode 单机模式

CentOS 安装 Hadoop Local (Standalone) Mode 单机模式 Hadoop Local (Standalone) Mode 单机模式 1. 修改yum源 并升级内核和软件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum clean allyum makecacheyum -y update2. 安…

如何让salesforce提交待审批后不锁定记录

在 Salesforce 中&#xff0c;默认情况下&#xff0c;当记录被提交待审批时&#xff0c;它会被锁定以防止其他用户对其进行修改。这是为了确保审批过程中数据的完整性和一致性。然而&#xff0c;有时可能希望提交待审批后不锁定记录&#xff0c;这时可以使用Apex代码来实现: Ap…

idea自动编译以及修改代码后需要执行 mvn clean install 才生效

idea自动编译以及修改代码后需要执行 mvn clean install 才生效 一. idea热部署一、开启IDEA的自动编译&#xff08;静态&#xff09;二、开启IDEA的自动编译&#xff08;动态&#xff09;三、开启IDEA的热部署策略&#xff08;非常重要&#xff09; 二. IDEA 中项目代码修改后…

Vue 插槽 组件插入不固定内容

定义好一个组件&#xff0c;如果想插入图片或视频这非常不好的控制应该显示什么&#xff0c;这个时候可以使用插槽插入自定义内容 默认插槽 <Login><template><h1>我是插入的内容</h1></template></Login >组件 <slot></slot>…

一文了解Elasticsearch

数据分类 数据按数据结构分类主要有三种&#xff1a;结构化数据、半结构化数据和非结构化数据。 结构化数据 结构化数据具有明确定义数据模型和格式的数据类型。 特点&#xff1a; 数据具有固定的结构和模式。 数据项明确定义数据类型和长度。 适合用于数据查询、过滤和分…

ZOC8 for Mac:超越期待的终端仿真器

在Mac上&#xff0c;一个优秀的终端仿真器是每位开发者和系统管理员的必备工具。ZOC8&#xff0c;作为一款广受好评的终端仿真器&#xff0c;以其强大的功能和易用性&#xff0c;已经在Mac用户中积累了良好的口碑。本文将为您详细介绍ZOC8的各项特性&#xff0c;以及为什么它会…

MSQL系列(十二) Mysql实战-为什么索引要建立在被驱动表上

Mysql实战-为什么索引要建立在被驱动表上 前面我们讲解了BTree的索引结构&#xff0c;也详细讲解下 left Join的底层驱动表 选择原理&#xff0c;那么今天我们来看看到底如何用以及如何建立索引和索引优化 开始之前我们先提一个问题&#xff0c; 为什么索引要建立在被驱动表上…

【NI-DAQmx入门】传感器基础知识

1.什么是传感器&#xff1f; 传感器可将真实的现象&#xff08;例如温度或压力&#xff09;转换为可测量的电流和电压&#xff0c;因而对于数据采集应用必不可少。接下来我们将介绍您所需的测量类型及其对应的传感器类型。在开始之前&#xff0c;您还可以先了解一些传感器术语&…

uniapp 开发微信小程序 v-bind给子组件传递函数,该函数中的this不是父组件的二是子组件的this

解决办法&#xff1a;子组件通过缓存子组件this然后&#xff0c;用bind改写this 这个方法因为定义了全局变量that 那么该变量就只能用一次&#xff0c;不然会有赋值覆盖的情况。 要么就弃用v-bind传入函数,改为emit传入自定义事件 [uniapp] uview(1.x) 二次封装u-navbar 导致…

[MySQL]——SQL预编译、动态sql

键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、SQL的预编译 &#x1f4d5;一条SQL语句的执行过程 &#x1f4d5;弊端 &#x1f4d5;预编译SQL的优势 &#x1f4d5;两种参数占位符 &#x1f4d5;小结 二、动态SQL &#x1f4d5;概念介绍&#xff1a; &#x1f4…