このページでは

QCollator Class

QCollator クラスは、ローカライズされた照合アルゴリズムに従って文字列を比較します。詳細...

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

注:このクラスのすべての関数は再入可能である。

QCollator の比較

カテゴリ比較可能な型
等価性QCollator

パブリック関数

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)

静的パブリックメンバー

(since 6.3) int defaultCompare(QStringView s1, QStringView s2)
(since 6.3) QCollatorSortKey defaultSortKey(QStringView key)
(since 6.12) bool operator!=(const QCollator &lhs, const QCollator &rhs)
(since 6.12) bool operator==(const QCollator &lhs, const QCollator &rhs)

詳細な説明

QCollator は、QLocale を使用して初期化されます。その後、そのロケールに適した順序付けを使用して、文字列の比較やソートを行うことができます。

QCollator オブジェクトは、std::sort() などのテンプレートベースのソートアルゴリズムと組み合わせて、QString エントリを含むリストをソートするために使用できます。

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

ロケールに加えて、照合の結果に影響を与えるいくつかのオプションのフラグを設定することができます。

POSIX フォールバック実装

Unix システムでは、Qt は通常、ICU を使用するようにコンパイルされます(macOS を除く。macOS では、Qt はデフォルトで同等の Apple API を使用します)。ただし、コンパイル時に ICU が利用できなかった場合や、明示的に無効にされた場合、Qt は POSIX API のみを使用するフォールバックバックエンドを使用します。このバックエンドにはいくつかの制限があります:

  • QLocale::c() およびQLocale::system() のロケールのみがサポートされています。システムロケールの詳細については、POSIXおよびC標準ライブラリのマニュアルにある<locale.h> ヘッダーを参照してください。
  • caseSensitivity() はサポートされていません。大文字と小文字を区別する照合のみ実行可能です。
  • numericMode() およびignorePunctuation() はサポートされていません。

サポートされていないオプションのいずれかを使用すると、アプリケーションの出力に警告が表示されます。

メンバ関数のドキュメント

QCollator::QCollator()

デフォルトのロケールの照合順序ロケールを使用して、QCollator を生成します。

システムロケールがデフォルトのロケールとして使用される場合、そのロケール自体とは異なる照合ロケールを持つことがあります(たとえば、Unix において、環境変数 LC_COLLATE の設定が LANG とは異なる場合など)。その他のすべてのロケールは、それ自体が照合ロケールとなります。

setLocale()、QLocale::collation()、およびQLocale::setDefault()も参照してください 。

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

指定されたlocale を使用して、QCollatorを構築します。

setLocale()も参照してください 。

QCollator::QCollator(const QCollator &other)

other のコピーを作成します。

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

移動コンストラクタ。other からこのコレーターへデータを移動します。

注: 移動元のオブジェクト other は 、部分的に形成された状態になります。この状態では、有効な操作は破棄と新しい値への代入のみです。

[noexcept] QCollator::~QCollator()

このソーターを破棄します。

Qt::CaseSensitivity QCollator::caseSensitivity() const

コレーターの大文字小文字の区別設定を返します。

設定されるまでは、デフォルトで大文字小文字を区別します。

注: Cロケールでは 、大文字と小文字を区別する場合、すべての大文字の後にすべての小文字がソートされます。一方、ほとんどのロケールでは、各小文字は大文字の直前に、または直後にソートされます。したがって、Cロケールでは「Zap」は「ape」より前にソートされますが、他のほとんどのロケールでは「ape」の後にソートされます。

setCaseSensitivity()も参照してください 。

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

s1 とs2 を比較します。

s1 がs2 より小さい場合は負の整数を、s2 より大きい場合は正の整数を、等しい場合は 0 を返します。

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

これはオーバーロードされた関数です。

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

s1 とs2 を比較します。len1 およびlen2 は、s1 およびs2 が指すQChar 配列の長さを指定します。

s1 がs2 より小さい場合は負の整数を、s2 より大きい場合は正の整数を、それらが等しい場合は0を返します。

注: Qt 6.4 以前のバージョンでは 、長さの引数の型はqsizetype ではなくint でした。

これはオーバーロードされた関数です。

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

文字列 `s1 ` と `s2` を比較し、それらのソート順を返します。この関数は、デフォルト構築された `QCollator ` オブジェクトに対して `compare()` と同じ操作を実行します。

この関数は Qt 6.3 で導入されました。

compare() およびdefaultSortKey()も参照してください 。

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

文字列 `key` のソートキーを返します。この関数は、デフォルト構築された `QCollator ` オブジェクトに対して `sortKey()` と同じ操作を実行します。

この関数は Qt 6.3 で導入されました。

sortKey() およびdefaultCompare()も参照してください 。

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

string 用の sortKey を返します。

通常、ソートキーを作成する処理は、compare() メソッドを直接使用するよりも多少時間がかかります。しかし、文字列の比較が繰り返し行われる場合(たとえば、文字列のリスト全体をソートする場合など)、各文字列に対してソートキーを作成し、そのキーを使用してソートを行う方が、通常は高速です。

注: Darwin上のC(別名POSIX)ロケールではサポートされていません 。

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

このコレーターをother と入れ替えます。この操作は非常に高速で、失敗することはありません。

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

QCollator は、ソートアルゴリズムの比較関数として使用できます。s1 がs2 より前にソートされる場合はtrue を返し、そうでない場合はfalse を返します。

compare()も参照してください 。

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

これはオーバーロードされた関数です。

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

other をこのQCollator インスタンスに割り当てます。

注: 移動元のオブジェクト other は 、部分的に形成された状態になります。この状態では、有効な操作は破棄と新しい値への代入のみです。

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

このコレーターに「other 」を割り当てます。

関連する非メンバー

[noexcept, since 6.12] bool operator!=(const QCollator &lhs, const QCollator &rhs)

[noexcept, since 6.12] bool operator==(const QCollator &lhs, const QCollator &rhs)

lhs とrhs が同じロケールおよび照合順序オプションを使用している場合は `true ` を返し、そうでない場合は `false` を返します。

これらの関数は Qt 6.12 で導入されました。

© 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.