PySide6.QtCore.QCollator

class QCollator

QCollator 类根据本地化的排序算法比较字符串。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QCollator 使用 QLocale 进行初始化。然后可以使用它来根据该区域设置的适当顺序比较和排序字符串。

一个QCollator对象可以与基于模板的排序算法(如std::sort())一起使用,以对包含QString条目的列表进行排序。

def sortedStrings(seq):

    order = QCollator()
    std::sort(seq.begin(), seq.end(), order)
    return seq

除了区域设置外,还可以设置几个可选标志,这些标志会影响排序的结果。

POSIX 回退实现

在Unix系统上,Qt通常编译为使用ICU(除了macOS,Qt默认使用等效的Apple API)。然而,如果在编译时ICU不可用或显式禁用,Qt将使用仅使用POSIX API的后备后端。这个后端有几个限制:

使用任何不受支持的选项都会导致警告被打印到应用程序的输出中。

__init__()

使用默认区域设置的排序区域设置构造一个QCollator

系统区域设置,当用作默认区域设置时,可能具有与其自身不同的排序区域设置(例如,在Unix上,如果LC_COLLATE在环境中设置为与LANG不同)。所有其他区域设置都是它们自己的排序区域设置。

__init__(other)
Parameters:

其他QCollator

创建 other 的副本。

__init__(locale)
Parameters:

localeQLocale

使用给定的locale构造一个QCollator

另请参阅

setLocale()

caseSensitivity()
Return type:

CaseSensitivity

返回校对器的区分大小写设置。

在设置之前,默认情况下是区分大小写的。

注意

在C语言环境中,当区分大小写时,所有小写字母都排在大写字母之后,而在大多数语言环境中,每个小写字母要么紧接在其大写字母之前,要么紧接在其大写字母之后。因此,“Zap”在C语言环境中排在“ape”之前,但在大多数其他语言环境中排在“ape”之后。

另请参阅

setCaseSensitivity()

compare(s1, s2)
Parameters:
  • s1 – 字符串

  • s2 – 字符串

Return type:

整数

比较 s1s2

如果 s1 小于 s2,则返回一个负整数;如果大于 s2,则返回一个正整数;如果相等,则返回零。

compare(s1, s2)
Parameters:
  • s1 – 字符串

  • s2 – 字符串

Return type:

整数

这是一个重载函数。

compare(s1, len1, s2, len2)
Parameters:
  • s1QChar

  • len1 – int

  • s2QChar

  • len2 – 整数

Return type:

整数

这是一个重载函数。

比较 s1s2len1len2 指定由 s1s2 指向的 QChar 数组的长度。

如果 s1 小于 s2,则返回一个负整数;如果大于 s2,则返回一个正整数;如果相等,则返回零。

注意

在Qt 6.4之前的版本中,长度参数的类型是int,而不是qsizetype

static defaultCompare(s1, s2)
Parameters:
  • s1 – 字符串

  • s2 – 字符串

Return type:

整数

比较字符串 s1s2,返回它们的排序顺序。此函数执行与默认构造的 QCollator 对象上的 compare() 相同的操作。

static defaultSortKey(key)
Parameters:

key – str

Return type:

QCollatorSortKey

返回字符串 key 的排序键。此函数在默认构造的 QCollator 对象上执行与 sortKey() 相同的操作。

ignorePunctuation()
Return type:

布尔

返回在排序时是否忽略标点符号和符号。

true 时,字符串的比较会忽略所有标点符号和符号。

另请参阅

setIgnorePunctuation()

locale()
Return type:

QLocale

返回排序器的区域设置。

除非通过构造函数或调用setLocale()提供,否则将使用系统的默认排序区域设置。

另请参阅

setLocale() collation()

numericMode()
Return type:

布尔

如果启用了数字排序,则返回true,否则返回false

true 时,数字被识别为数字并按算术顺序排序;例如,100 排在 99 之后。当 false 时,数字按字典顺序排序,因此 100 排在 99 之前(因为 1 在 9 之前)。默认情况下,此选项是禁用的。

另请参阅

setNumericMode()

__call__(s1, s2)
Parameters:
  • s1 – 字符串

  • s2 – 字符串

Return type:

布尔

一个QCollator可以用作排序算法的比较函数。如果s1s2之前排序,则返回true,否则返回false

另请参阅

compare()

__call__(s1, s2)
Parameters:
  • s1 – 字符串

  • s2 – 字符串

Return type:

布尔

这是一个重载函数。

setCaseSensitivity(cs)
Parameters:

csCaseSensitivity

将排序器的区分大小写设置为 cs

另请参阅

caseSensitivity()

setIgnorePunctuation(on)
Parameters:

on – 布尔值

如果ontrue,则忽略标点符号和符号,如果false,则关注它们。

另请参阅

ignorePunctuation()

setLocale(locale)
Parameters:

localeQLocale

将排序器的区域设置设置为 locale

另请参阅

locale()

setNumericMode(on)
Parameters:

on – 布尔值

ontrue时,启用数字排序模式。

另请参阅

numericMode()

sortKey(string)
Parameters:

字符串 – str

Return type:

QCollatorSortKey

返回一个用于string的sortKey。

创建排序键通常比直接使用compare()方法稍慢一些。但如果字符串被反复比较(例如在对整个字符串列表进行排序时),通常更快的方法是为每个字符串创建排序键,然后使用这些键进行排序。

注意

在Darwin上不支持C(也称为POSIX)区域设置。

swap(other)
Parameters:

其他QCollator

将此排序器与 other 交换。此函数非常快且永远不会失败。