-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
5.15.19, 6.7.3, 6.10.0
-
None
This code:
#include <QCoreApplication> #include <QLocale> #include <QCollator> #include <QtDebug> int main( int argc, char* argv[] ) { QCoreApplication app( argc, argv ); QLocale::setDefault( QLocale::Swedish ); QString s1 = "a"; QString s2 = "b"; QString s3 = "o"; QString s4 = "z"; QString s5 = "å"; QString s6 = "ä"; QString s7 = "ö"; qDebug() << "s1=" << s1; qDebug() << "s2=" << s2; qDebug() << "s3=" << s3; qDebug() << "s4=" << s4; qDebug() << "s5=" << s5; qDebug() << "s6=" << s6; qDebug() << "s7=" << s7; qDebug() << "QString::localeAwareCompare( s1, s2 )=" << QString::localeAwareCompare( s1, s2 ); qDebug() << "QString::localeAwareCompare( s2, s3 )=" << QString::localeAwareCompare( s2, s3 ); qDebug() << "QString::localeAwareCompare( s3, s4 )=" << QString::localeAwareCompare( s3, s4 ); qDebug() << "QString::localeAwareCompare( s4, s5 )=" << QString::localeAwareCompare( s4, s5 ); qDebug() << "QString::localeAwareCompare( s5, s6 )=" << QString::localeAwareCompare( s5, s6 ); qDebug() << "QString::localeAwareCompare( s6, s7 )=" << QString::localeAwareCompare( s6, s7 ); return app.exec(); }
Returns on Windows (Qt 5 and 6):
s1= "a" s2= "b" s3= "o" s4= "z" s5= "å" s6= "ä" s7= "ö" QString::localeAwareCompare( s1, s2 )= -1 QString::localeAwareCompare( s2, s3 )= -1 QString::localeAwareCompare( s3, s4 )= -1 QString::localeAwareCompare( s4, s5 )= 1 QString::localeAwareCompare( s5, s6 )= 1 QString::localeAwareCompare( s6, s7 )= -1
And returns on Mac (Qt 5 and 6):
s1= "a" s2= "b" s3= "o" s4= "z" s5= "å" s6= "ä" s7= "ö" QString::localeAwareCompare( s1, s2 )= -1 QString::localeAwareCompare( s2, s3 )= -1 QString::localeAwareCompare( s3, s4 )= -1 QString::localeAwareCompare( s4, s5 )= 1 QString::localeAwareCompare( s5, s6 )= -1 QString::localeAwareCompare( s6, s7 )= -1
-1 should be return in all cases, as the correct order is:
a to z,å,ä,ö
Note that Windows and Mac output are not the same!
This code:
QCollator collator(QLocale::Swedish);
QStringList list = {s7, s1, s2, s3, s4, s5, s6 };
std::sort(list.begin(), list.end(), collator);
qDebug() << "list=" << list;
returns the expected sort order on both Windows and Mac:
list= ("a", "b", "o", "z", "å", "ä", "ö")
- relates to
-
QTBUG-67490 QCollatorSortKey doesn't work on macOS
-
- In Progress
-
-
QTBUG-88704 QCollatorSortKey is not working properly without ICU support
-
- In Progress
-