QCollator Class

Die Klasse QCollator vergleicht Zeichenketten nach einem lokalisierten Sortieralgorithmus. Mehr...

Kopfzeile: #include <QCollator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

QCollator()
QCollator(const QLocale &locale)
QCollator(const QCollator &other)
QCollator(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, qsizetype len1, const QChar *s2, qsizetype 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 &operator=(QCollator &&other)
QCollator &operator=(const QCollator &other)

Statische öffentliche Mitglieder

(since 6.3) int defaultCompare(QStringView s1, QStringView s2)
(since 6.3) QCollatorSortKey defaultSortKey(QStringView key)

Detaillierte Beschreibung

QCollator wird mit einer QLocale initialisiert. Es kann dann zum Vergleichen und Sortieren von Strings verwendet werden, indem die für das jeweilige Gebietsschema geeignete Reihenfolge verwendet wird.

Ein QCollator-Objekt kann zusammen mit schablonenbasierten Sortieralgorithmen, wie z.B. std::sort(), verwendet werden, um eine Liste mit QString Einträgen zu sortieren.

QStringList sortedStrings(QStringList seq)
{
    QCollator order;
    std::sort(seq.begin(), seq.end(), order);
    return seq;
}

Zusätzlich zum Gebietsschema können mehrere optionale Flags gesetzt werden, die das Ergebnis der Sortierung beeinflussen.

POSIX-Fallback-Implementierung

Auf Unix-Systemen wird Qt normalerweise so kompiliert, dass es ICU verwendet (außer unter macOS, wo Qt standardmäßig eine äquivalente Apple-API verwendet). Wenn ICU jedoch zur Kompilierzeit nicht verfügbar war oder explizit deaktiviert wurde, verwendet Qt ein Fallback-Backend, das nur die POSIX-API verwendet. Dieses Backend hat mehrere Einschränkungen:

  • Es werden nur die Sprachumgebungen QLocale::c() und QLocale::system() unterstützt. Konsultieren Sie die POSIX- und C-Standardbibliotheks-Handbücher für den <locale.h> -Header für weitere Informationen über die System-Sprachumgebung.
  • caseSensitivity() wird nicht unterstützt: Es kann nur eine Sortierung unter Berücksichtigung der Groß-/Kleinschreibung durchgeführt werden.
  • numericMode() und ignorePunctuation() werden nicht unterstützt.

Die Verwendung einer der nicht unterstützten Optionen führt zu einer Warnung in der Ausgabe der Anwendung.

Dokumentation der Mitgliedsfunktionen

QCollator::QCollator()

Konstruiert einen QCollator unter Verwendung des Standardgebietsschemas der Kollation.

Das Systemgebietsschema kann, wenn es als Standardgebietsschema verwendet wird, ein anderes Kollationierungsgebietsschema haben als es selbst (z.B. unter Unix, wenn LC_COLLATE anders als LANG in der Umgebung gesetzt ist). Alle anderen Locales sind ihre eigenen Kollationslocales.

Siehe auch setLocale(), QLocale::collation(), und QLocale::setDefault().

[explicit] QCollator::QCollator(const QLocale &locale)

Konstruiert einen QCollator unter Verwendung der angegebenen locale.

Siehe auch setLocale().

QCollator::QCollator(const QCollator &other)

Erzeugt eine Kopie von other.

[noexcept] QCollator::QCollator(QCollator &&other)

Verschieben-Konstruktor. Verschiebt von other in diesen Kollator.

Hinweis: Das verschobene Objekt other wird in einen teilweise gebildeten Zustand versetzt, in dem die einzigen gültigen Operationen die Zerstörung und die Zuweisung eines neuen Wertes sind.

[noexcept] QCollator::~QCollator()

Zerstört diesen Kollator.

Qt::CaseSensitivity QCollator::caseSensitivity() const

Gibt die Groß- und Kleinschreibung des Kollators zurück.

Standardmäßig wird die Groß-/Kleinschreibung beachtet, bis sie festgelegt wird.

Hinweis: Im Gebietsschema C werden bei Unterscheidung der Groß- und Kleinschreibung alle Kleinbuchstaben nach allen Großbuchstaben sortiert, während in den meisten anderen Gebietsschemata jeder Kleinbuchstabe entweder unmittelbar vor oder unmittelbar nach seinem Partner in Großbuchstaben sortiert wird. So wird "Zap" im Gebietsschema C vor "ape" sortiert, in den meisten anderen jedoch danach.

Siehe auch setCaseSensitivity().

int QCollator::compare(QStringView s1, QStringView s2) const

Vergleicht s1 mit s2.

Gibt eine negative ganze Zahl zurück, wenn s1 kleiner ist als s2, eine positive ganze Zahl, wenn sie größer ist als s2, und Null, wenn sie gleich sind.

int QCollator::compare(const QString &s1, const QString &s2) const

Dies ist eine überladene Funktion.

int QCollator::compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const

Dies ist eine überladene Funktion.

Vergleicht s1 mit s2. len1 und len2 geben die Längen der Arrays QChar an, auf die s1 und s2 verweisen.

Gibt eine negative Ganzzahl zurück, wenn s1 kleiner als s2 ist, eine positive Ganzzahl, wenn sie größer als s2 ist, und Null, wenn sie gleich sind.

Hinweis: In Qt-Versionen vor 6.4 waren die Längenargumente vom Typ int, nicht qsizetype.

[static, since 6.3] int QCollator::defaultCompare(QStringView s1, QStringView s2)

Vergleicht die Zeichenketten s1 und s2 und gibt deren Sortierreihenfolge zurück. Diese Funktion führt dieselbe Operation wie compare() mit einem standardmäßig konstruierten QCollator Objekt durch.

Diese Funktion wurde in Qt 6.3 eingeführt.

Siehe auch compare() und defaultSortKey().

[static, since 6.3] QCollatorSortKey QCollator::defaultSortKey(QStringView key)

Gibt den Sortierschlüssel für die Zeichenkette key zurück. Diese Funktion führt dieselbe Operation wie sortKey() an einem standardmäßig konstruierten QCollator Objekt durch.

Diese Funktion wurde in Qt 6.3 eingeführt.

Siehe auch sortKey() und defaultCompare().

bool QCollator::ignorePunctuation() const

Gibt zurück, ob Satzzeichen und Symbole bei der Kollationierung ignoriert werden.

Wenn true, werden Zeichenketten so verglichen, als ob alle Satzzeichen und Symbole aus jeder Zeichenkette entfernt wurden.

Siehe auch setIgnorePunctuation().

QLocale QCollator::locale() const

Gibt das Gebietsschema des Kollators zurück.

Sofern nicht im Konstruktor oder durch den Aufruf von setLocale() angegeben, wird das Standard-Locale des Systems für die Kollationierung verwendet.

Siehe auch setLocale() und QLocale::collation().

bool QCollator::numericMode() const

Gibt true zurück, wenn die numerische Sortierung aktiviert ist, andernfalls false.

Wenn true aktiviert ist, werden Ziffern als Zahlen erkannt und in arithmetischer Reihenfolge sortiert; zum Beispiel wird 100 nach 99 sortiert. Wenn false aktiviert ist, werden Zahlen in lexikalischer Reihenfolge sortiert, so dass 100 vor 99 sortiert wird (weil 1 vor 9 steht). Standardmäßig ist diese Option deaktiviert.

Siehe auch setNumericMode().

void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs)

Setzt die Groß- und Kleinschreibung des Kollators auf cs.

Siehe auch caseSensitivity().

void QCollator::setIgnorePunctuation(bool on)

Ignoriert Interpunktion und Symbole, wenn on true ist, und beachtet sie, wenn false.

Siehe auch ignorePunctuation().

void QCollator::setLocale(const QLocale &locale)

Setzt das Gebietsschema des Kollators auf locale.

Siehe auch locale().

void QCollator::setNumericMode(bool on)

Aktiviert den numerischen Sortiermodus, wenn on true ist.

Siehe auch numericMode().

QCollatorSortKey QCollator::sortKey(const QString &string) const

Gibt einen sortKey für string zurück.

Die Erstellung des Sortierschlüssels ist in der Regel etwas langsamer, als die direkte Verwendung der Methoden compare(). Aber wenn die Zeichenkette wiederholt verglichen wird (z.B. beim Sortieren einer ganzen Liste von Zeichenketten), ist es normalerweise schneller, die Sortierschlüssel für jede Zeichenkette zu erstellen und dann anhand der Schlüssel zu sortieren.

Hinweis: Nicht unterstützt mit dem C (a.k.a. POSIX) Gebietsschema auf Darwin.

[noexcept] void QCollator::swap(QCollator &other)

Tauscht diesen Kollator mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

bool QCollator::operator()(QStringView s1, QStringView s2) const

Eine QCollator kann als Vergleichsfunktion eines Sortieralgorithmus verwendet werden. Sie gibt true zurück, wenn s1 vor s2 sortiert, andernfalls false.

Siehe auch compare().

bool QCollator::operator()(const QString &s1, const QString &s2) const

Dies ist eine überladene Funktion.

[noexcept] QCollator &QCollator::operator=(QCollator &&other)

Verschieben - weist other dieser Instanz QCollator zu.

Hinweis: Das verschobene Objekt other wird in einen teilweise gebildeten Zustand versetzt, in dem die einzigen gültigen Operationen Zerstörung und Zuweisung eines neuen Wertes sind.

QCollator &QCollator::operator=(const QCollator &other)

Weist other diesem Kollator zu.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.