Класс QCollator
Класс QCollator сравнивает строки в соответствии с алгоритмом сортировки, локализованным для определенной языковой среды. Подробнее...
| Заголовок: | #include <QCollator> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С тех пор: | Qt 5.2 |
Примечание: Все функции в этом классе являются повторно входящими.
Открытые функции
| QCollator(QCollator &&other) | |
| QCollator(const QCollator &other) | |
| QCollator(const QLocale &locale) | |
| QCollator() | |
| QCollator & | operator=(QCollator &&other) |
| QCollator & | operator=(const QCollator &other) |
| ~QCollator() | |
| Qt::CaseSensitivity | caseSensitivity() const |
| int | compare(QStringView s1, QStringView s2) const |
| int | compare(const QString &s1, const QString &s2) const |
| int | compare(const QChar *s1, int len1, const QChar *s2, int len2) const |
| bool | ignorePunctuation() const |
| QLocale | locale() const |
| bool | numericMode() const |
| void | setCaseSensitivity(Qt::CaseSensitivity cs) |
| void | setIgnorePunctuation(bool on) |
| void | setLocale(const QLocale &locale) |
| void | setNumericMode(bool on) |
| QCollatorSortKey | sortKey(const QString &string) const |
| void | swap(QCollator &other) |
| bool | operator()(QStringView s1, QStringView s2) const |
| bool | operator()(const QString &s1, const QString &s2) const |
Подробное описание
QCollator инициализируется с помощью QLocale. Затем он может использоваться для сравнения и сортировки строк, используя порядок, соответствующий локали.
Объект QCollator может использоваться вместе с алгоритмами сортировки на основе шаблонов, такими как std::sort(), для сортировки списка со строками QString.
QStringList sortedStrings(QStringList seq)
{
QCollator order;
std::sort(seq.begin(), seq.end(), order);
return seq;
} В дополнение к локали могут быть установлены несколько дополнительных флагов, которые влияют на результат сортировки.
Примечание: В Linux Qt обычно компилируется с использованием ICU. Когда этого не происходит, все опции игнорируются, и поддерживаются только системные настройки по умолчанию (которые setlocale(LC_COLLATE, nullptr) бы сообщили) и локали "C".
Документация по функциям-членам
QCollator::QCollator(QCollator &&other)
Конструктор перемещения. Перемещает данные из other в данный коллатор.
Обратите внимание, что перемещённый QCollator можно только уничтожить или присвоить. Влияние вызова других функций, кроме деструктора или одного из операторов присваивания, не определено.
QCollator::QCollator(const QCollator &other)
Создаёт копию other.
QCollator::QCollator(const QLocale &locale)
Создаёт QCollator, используя заданную locale.
См. также setLocale().
[since 5.13] QCollator::QCollator()
Создаёт QCollator, используя локали сортировки по умолчанию.
Системная локали, используемая в качестве локали по умолчанию, может иметь локаль сортировки, отличную от самой себя (например, в Unix, если LC_COLLATE установлено иначе, чем LANG, в среде). Все другие локали являются своими локалями сортировки.
Эта функция была добавлена в Qt 5.13.
См. также setLocale(), QLocale::collation() и QLocale::setDefault().
QCollator &QCollator::operator=(QCollator &&other)
Присваивает значение из other данному коллатору с использованием перемещения.
Обратите внимание, что перемещённый QCollator можно только уничтожить или присвоить. Влияние вызова других функций, кроме деструктора или одного из операторов присваивания, не определено.
QCollator &QCollator::operator=(const QCollator &other)
Присваивает other данному коллатору.
QCollator::~QCollator()
Уничтожает этот коллатор.
Qt::CaseSensitivity QCollator::caseSensitivity() const
Возвращает чувствительность к регистру коллатора.
По умолчанию чувствителен к регистру до установки.
Примечание: В локали C, при чувствительности к регистру, все строчные буквы стоят после всех заглавных букв, тогда как в большинстве локалей каждая строчная буква либо непосредственно предшествует, либо непосредственно следует за своей заглавной парой. Таким образом, «Zap» сортируется перед «ape» в локали C, но после в большинстве других.
См. также setCaseSensitivity().
[since 5.13] int QCollator::compare(QStringView s1, QStringView s2) const
Сравнивает s1 с s2.
Возвращает целое число, меньшее, равное или большее нуля, в зависимости от того, предшествует ли s1, совпадает ли или следует ли s2.
Эта функция была добавлена в Qt 5.13.
[since 5.2] int QCollator::compare(const QString &s1, const QString &s2) const
Это перегруженная функция.
Эта функция была добавлена в Qt 5.2.
[since 5.2] int QCollator::compare(const QChar *s1, int len1, const QChar *s2, int len2) const
Это перегруженная функция.
Сравнивает s1 с s2. len1 и len2 указывают длины массивов QChar, на которые указывают s1 и s2 соответственно.
Возвращает целое число, меньшее, равное или большее нуля, в зависимости от того, предшествует ли s1, совпадает ли или следует ли s2.
Эта функция была добавлена в Qt 5.2.
bool QCollator::ignorePunctuation() const
Возвращает значение, указывающее, игнорируются ли знаки препинания и символы при сортировке.
Когда true, строки сравниваются так, как если бы из каждой строки были удалены все знаки препинания и символы.
См. также setIgnorePunctuation().
QLocale QCollator::locale() const
Возвращает локаль коллатора.
Если не задана при создании или при помощи вызова setLocale(), используется системная локали сортировки по умолчанию.
См. также setLocale() и QLocale::collation().
bool QCollator::numericMode() const
Возвращает true при включенном числовом сортировании, false в противном случае.
Когда true, цифры распознаются как числа и сортируются в арифметическом порядке; например, 100 идёт после 99. Когда false, числа сортируются в лексикографическом порядке, так что 100 идёт перед 99 (потому что 1 идёт перед 9). По умолчанию этот параметр отключен.
См. также setNumericMode().
void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs)
Устанавливает чувствительность к регистру сортировщика на cs.
См. также caseSensitivity().
void QCollator::setIgnorePunctuation(bool on)
Игнорирует знаки препинания и символы, если on равно true, обращает на них внимание, если false.
См. также ignorePunctuation().
void QCollator::setLocale(const QLocale &locale)
Устанавливает локаль сортировщика на locale.
См. также locale().
void QCollator::setNumericMode(bool on)
Включает числовой режим сортировки, когда on равно true.
См. также numericMode().
QCollatorSortKey QCollator::sortKey(const QString &string) const
Возвращает sortKey для string.
Создание ключа сортировки обычно немного медленнее, чем непосредственное использование методов compare(). Но если строка сравнивается многократно (например, при сортировке всего списка строк), обычно быстрее создать ключи сортировки для каждой строки и затем отсортировать их.
Примечание: Не поддерживается с локалью C (также известной как POSIX) на Darwin.
void QCollator::swap(QCollator &other)
Меняет местами этот сортировщик с other. Эта функция очень быстрая и никогда не терпит неудач.
[since 5.13] bool QCollator::operator()(QStringView s1, QStringView s2) const
Объект QCollator может использоваться в качестве функции сравнения алгоритма сортировки. Возвращает true если s1 идёт перед s2, в противном случае false.
Эта функция была введена в Qt 5.13.
См. также compare().
[since 5.2] bool QCollator::operator()(const QString &s1, const QString &s2) const
Это перегруженная функция.
Эта функция была введена в Qt 5.2.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qcollator.html