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__(arg__1)#
参数:

arg__1QCollator

创建other的副本。

__init__(locale)
参数:

localeQLocale

使用给定的locale构建一个QCollator对象。

参阅

setLocale()

__init__()

使用默认locale的collation locale构建一个QCollator

当系统locale用作默认locale时,其可能有一个不同于自身的collation locale(例如,在Unix上,如果LC_COLLATE在环境中设置为不同于LANG,则如此)。所有其他locale都是它们的自身collation locale。

caseSensitivity()#
返回类型:

CaseSensitivity

返回collator的区分大小写能力。

默认为区分大小写,直到被设置。

注意

在C locale中,当区分大小写时,所有小写字母都排在所有大写字母之后,而大多数locale则将每个小写字母排在它的大写形式之前或之后。因此,在C locale中“Zap”排在“ape”之前,但在大多数其他locale中排在之后。

compare(s1, s2)#
参数:
  • s1 – str

  • s2 – str

返回类型:

int

比较s1与s2。

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

compare(s1, len1, s2, len2)
参数:
  • s1QChar

  • len1 – 整数

  • s2QChar

  • len2 – 整数

返回类型:

int

这是一个重载的函数。

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

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

注意

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

compare(s1, s2)
参数:
  • s1 – str

  • s2 – str

返回类型:

int

这是一个重载的函数。

static defaultCompare(s1, s2)#
参数:
  • s1 – str

  • s2 – str

返回类型:

int

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

static defaultSortKey(key)#
参数:

key – 字符串

返回类型:

QCollatorSortKey

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

ignorePunctuation()#
返回类型:

布尔值

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

true 时,字符串比较时会假定每个字符串中所有标点符号和符号都被移除。

locale()#
返回类型:

QLocale

返回排序器的区域设置。

除非在构造函数中提供或者在调用 setLocale() 时指定,否则使用系统默认的排序区域设置。

numericMode()#
返回类型:

布尔值

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

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

__call__(s1, s2)#
参数:
  • s1 – str

  • s2 – str

返回类型:

布尔值

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

参阅

compare()

__call__(s1, s2)
参数:
  • s1 – str

  • s2 – str

返回类型:

布尔值

这是一个重载的函数。

setCaseSensitivity(cs)#
参数:

cs – CaseSensitivity

将排序器的区域敏感度设置为 cs

setIgnorePunctuation(on)#
参数:

on – bool

如果 ontrue,则忽略标点符号和符号;如果 false,则考虑这些符号。

setLocale(locale)#
参数:

localeQLocale

将排序器的区域设置为 locale

参阅

locale()

setNumericMode(on)#
参数:

on – bool

ontrue时启用数字排序模式。

参阅

numericMode()

sortKey(string)#
参数:

字符串 - str

返回类型:

QCollatorSortKey

返回用于string的排序键。

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

注意

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

swap(other)#
参数:

其他 - QCollator

other交换此比较器。此函数非常快且永远不会失败。