CComboBox oder QStringList mit deutschen Umlauten al­pha­be­tisch sortieren



  • Hallo,

    wie können Strings mit deutschen Umlauten in einer QComboxBox al­pha­be­tisch sortiert werden?

    Auch der Umweg über QStringList::sort() funktioniert leider nicht mit deutschen Umlauten. Es wird wie folgt sortiert:

    Afganistan
    Deutschland
    England
    Ägypten

    Gewünscht ist aber:

    Afganistan
    Ägypten
    Deutschland
    England

    Wie wird in Qt eine Liste von Strings mit deutschen Umlauten am einfachsten sortiert?



  • Die Lösung: QStringList kann wie folgt sortiert werden:

    #include "CStringList.h"
    
    inline bool SortLocaleAware(const QString &lhs, const QString &rhs)
    {
      return QString::localeAwareCompare(lhs, rhs) < 0;
    }
    
    void main()
    {
       QStringList StringList;
    
       StringList << "Deutschland";
       StringList << "Ägypten";
       StringList << "England";
       StringList << "Afganistan";
    
       std::sort(StringList.begin(), StringList.end(), SortLocaleAware);
    {
    

    Mit QCombobox::adItems(QStringList) kann die ComboBox dann später mit alphabetisch richtig sortiertem Inhalt gefüllt werden.


Anmelden zum Antworten