QCollator Class
Die Klasse „QCollator“ vergleicht Zeichenketten anhand eines lokalisierten Sortieralgorithmus. Mehr...
| Header: | #include <QCollator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QCollator ist Teil der Klassen für Zeichenkettendaten und der implizit gemeinsam genutzten Klassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
QCollator-Vergleiche
| Kategorie | Vergleichbare Typen |
|---|---|
| Gleichheit | QCollator |
Ö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) |
Verwandte Nicht-Mitglieder
(since 6.12) bool | operator!=(const QCollator &lhs, const QCollator &rhs) |
(since 6.12) bool | operator==(const QCollator &lhs, const QCollator &rhs) |
Ausführliche Beschreibung
QCollator wird mit einem ` QLocale` initialisiert. Anschließend kann es verwendet werden, um Zeichenketten unter Verwendung der für diese Locale geeigneten Reihenfolge zu vergleichen und zu sortieren.
Ein QCollator-Objekt kann zusammen mit vorlagengestützten Sortieralgorithmen wie std::sort() verwendet werden, um eine Liste mit Einträgen aus „ QString “ zu sortieren.
QStringList sortedStrings(QStringList seq)
{
QCollator order;
std::sort(seq.begin(), seq.end(), order);
return seq;
}Zusätzlich zur Locale 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 ICU verwendet wird (außer unter macOS, wo Qt standardmäßig eine gleichwertige Apple-API verwendet). Sollte ICU jedoch zum Zeitpunkt der Kompilierung nicht verfügbar oder explizit deaktiviert sein, verwendet Qt ein Fallback-Backend, das ausschließlich die POSIX-API nutzt. Dieses Backend weist mehrere Einschränkungen auf:
- Es werden nur die Locales „ QLocale::c “ () und „ QLocale::system “ () unterstützt. Weitere Informationen zur System-Locale finden Sie in den Handbüchern zu POSIX und zur C-Standardbibliothek unter dem Header „
<locale.h>“. - caseSensitivity() wird nicht unterstützt: Es kann nur eine sortierweise mit Groß-/Kleinschreibung durchgeführt werden.
- numericMode() und ignorePunctuation() werden nicht unterstützt.
Die Verwendung einer der nicht unterstützten Optionen führt dazu, dass eine Warnung in die Ausgabe der Anwendung geschrieben wird.
Dokumentation zu den Mitgliedsfunktionen
QCollator::QCollator()
Erstellt einen QCollator unter Verwendung der Sortier-Locale der Standard-Locale.
Die System-Locale kann, wenn sie als Standard-Locale verwendet wird, eine andere Sortier-Locale als sich selbst haben (z. B. unter Unix, wenn LC_COLLATE in der Umgebung anders als LANG gesetzt ist). Alle anderen Locales sind ihre eigenen Sortier-Locales.
Siehe auch setLocale(), QLocale::collation() und QLocale::setDefault().
[explicit] QCollator::QCollator(const QLocale &locale)
Erstellt einen QCollator unter Verwendung des angegebenen ` locale`.
Siehe auch ` setLocale()`.
QCollator::QCollator(const QCollator &other)
Erstellt eine Kopie von „ other “.
[noexcept] QCollator::QCollator(QCollator &&other)
Move-Konstruktor. Verschiebt Daten von other in diesen Collator.
Hinweis: Das Objekt „ other “, aus dem die Daten verschoben wurden, befindet sich in einem teilweise initialisierten Zustand, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Werts sind.
[noexcept] QCollator::~QCollator()
Löscht diesen Sortierer.
Qt::CaseSensitivity QCollator::caseSensitivity() const
Gibt an, ob der Collator zwischen Groß- und Kleinschreibung unterscheidet.
Standardmäßig wird die Groß-/Kleinschreibung berücksichtigt, bis etwas anderes festgelegt wird.
Hinweis: In der C-Locale werden bei der Groß-/Kleinschreibung alle Kleinbuchstaben nach allen Großbuchstaben sortiert, während in den meisten Locales jeder Kleinbuchstabe entweder unmittelbar vor oder unmittelbar nach seinem Großbuchstaben-Pendant sortiert wird. Daher wird „Zap“ in der C-Locale vor „ape“ sortiert, in den meisten anderen Locales 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 als s2 ist, eine positive ganze Zahl, wenn es größer als s2 ist, und Null, wenn beide Werte 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
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 es größer als s2 ist, und Null, wenn beide gleich sind.
Hinweis: In Qt-Versionen vor 6.4 waren die Längenargumente vom Typ „ int “ und nicht vom Typ „ qsizetype “.
Dies ist eine überladene Funktion.
[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 aus wie die Funktion „ compare()“ auf einem standardmäßig initialisierten „ QCollator “-Objekt.
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 aus wie „ sortKey()“ für ein standardmäßig initialisiertes „ QCollator “-Objekt.
Diese Funktion wurde in Qt 6.3 eingeführt.
Siehe auch ` sortKey()` und ` defaultCompare()`.
bool QCollator::ignorePunctuation() const
Gibt zurück, ob Satzzeichen und Sonderzeichen beim Sortieren ignoriert werden.
Wenn „ true “ ist, werden Zeichenfolgen so verglichen, als wären alle Satzzeichen und Sonderzeichen aus jeder Zeichenfolge entfernt worden.
Siehe auch ` setIgnorePunctuation()`.
QLocale QCollator::locale() const
Gibt die Locale des Sortieralgorithmus zurück.
Sofern nicht im Konstruktor oder durch den Aufruf von ` setLocale()` angegeben, wird die Standard-Sortier-Locale des Systems 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 ist, werden Ziffern als Zahlen erkannt und in arithmetischer Reihenfolge sortiert; beispielsweise wird 100 nach 99 sortiert. Wenn false ist, werden Zahlen in lexikalischer Reihenfolge sortiert, sodass 100 vor 99 sortiert wird (da 1 vor 9 kommt). Standardmäßig ist diese Option deaktiviert.
Siehe auch setNumericMode().
void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs)
Legt die Groß-/Kleinschreibung des Sortierprogramms auf „ cs “ fest.
Siehe auch ` caseSensitivity()`.
void QCollator::setIgnorePunctuation(bool on)
Ignoriert Satzzeichen und Sonderzeichen, wenn on gleich true ist, berücksichtigt sie hingegen, wenn false ist.
Siehe auch ignorePunctuation().
void QCollator::setLocale(const QLocale &locale)
Setzt die Sprachumgebung des Sortieralgorithmus auf „ locale “.
Siehe auch locale().
void QCollator::setNumericMode(bool on)
Aktiviert den numerischen Sortiermodus, wenn „ on “ auf „ true “ gesetzt ist.
Siehe auch ` numericMode()`.
QCollatorSortKey QCollator::sortKey(const QString &string) const
Gibt einen sortKey für „ string “ zurück.
Das Erstellen des Sortierschlüssels ist in der Regel etwas langsamer als die direkte Verwendung der Methoden von ` compare()`. Wenn die Zeichenkette jedoch wiederholt verglichen wird (z. B. beim Sortieren einer ganzen Liste von Zeichenketten), ist es meist schneller, für jede Zeichenkette einen Sortierschlüssel zu erstellen und dann anhand dieser Schlüssel zu sortieren.
Hinweis: Wird unter Darwin mit der C-Locale (auch bekannt als POSIX)nicht unterstützt.
[noexcept] void QCollator::swap(QCollator &other)
Tauscht diesen Sortierer gegen „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals 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 wird, 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)
Weist „ other “ dieser Instanz von „ QCollator “ zu.
Hinweis: Das Objekt „ other “, aus dem die Zuweisung erfolgt ist, wird in einen teilweise initialisierten Zustand versetzt, in dem die einzigen zulässigen Operationen die Zerstörung und die Zuweisung eines neuen Werts sind.
QCollator &QCollator::operator=(const QCollator &other)
Weist diesem Sortierer die Funktion „ other “ zu.
Verwandte Nicht-Mitglieder
[noexcept, since 6.12] bool operator!=(const QCollator &lhs, const QCollator &rhs)
[noexcept, since 6.12] bool operator==(const QCollator &lhs, const QCollator &rhs)
Gibt „ true “ zurück, wenn „ lhs “ und „ rhs “ dieselben Locale- und Sortierreihenfolge-Optionen verwenden; andernfalls wird „ false “ zurückgegeben.
Diese Funktionen wurden in Qt 6.12 eingeführt.
© 2026 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.