Komma als Dezimalseparor Qt4 nach Qt5

Alles rund um die Programmierung mit Qt
Antworten
AlexDu
Beiträge: 14
Registriert: 28. Januar 2009 14:08

Komma als Dezimalseparor Qt4 nach Qt5

Beitrag von AlexDu »

Guten Tag,

ich habe ein Projekt von Qt4.8 nach Qt5.4 umgestellt. Ein Problem ist übrig geblieben und ich habe dazu auch nichts in diversen Migrationshilfen gefunden.
Unter Qt4.8 und davor wurden alle Eingaben, sowohl in QLineEdit als auch in QTableView, problemlos mit .toDouble() in double umgewandelt. Egal ob ein Komma oder ein Punkt als Dezimalseparator eingegeben wurde. In Qt5 wird nur der Punkt akzeptiert.

Kann ich das alte Verhalten wieder herstellen, ohne alle Eingaben vom Programm überprüfen zu lasssen?

Viele Grüße
Alex
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Komma als Dezimalseparor Qt4 nach Qt5

Beitrag von Christian81 »

Warum es in Qt4 ging kann ich nicht genau erklären - ggf. war dort die Locale anders.
Bei QString::toDouble() wird immer die Locale mit beachtet: http://qt-project.org/doc/qt-4.8/qstring.html#toDouble
Wenn die Locale also auf Deutsch eingestellt ist, sollte auch ',' als Separator akzeptiert werden.

Achtung: QByteArray kümmert sich übrigens nicht um die Locale
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AlexDu
Beiträge: 14
Registriert: 28. Januar 2009 14:08

Re: Komma als Dezimalseparor Qt4 nach Qt5

Beitrag von AlexDu »

Mit dem QLocale hab ich schon rumprobiert. Bei mir klappt das irgendwie nicht.

Code: Alles auswählen

        QLocale::setDefault(QLocale::German);
        QString sTest = "1.5";
        double dTest = sTest.toDouble();
        qDebug() << "Test: " << dTest;
ergibt 1.5
Mit sTest "1,5" wird 0 zurückgegeben.
Da war ich wohl etwas voreilig mit der Umstellung auf Qt5.

Gruß Alex
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Komma als Dezimalseparor Qt4 nach Qt5

Beitrag von Christian81 »

Sollte aber gehen, siehe http://doc.qt.io/qt-5/qlocale.html#toDouble
Bitte mal testen, ansonsten Bugreport an Qt. Welche Qt-Version benutzt Du?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
AlexDu
Beiträge: 14
Registriert: 28. Januar 2009 14:08

Re: Komma als Dezimalseparor Qt4 nach Qt5

Beitrag von AlexDu »

Danke Christian,

Du hast recht, wenn ich QLocale::toDouble benutze wird das Komma als Dezimalseperator akzeptiert. Leider wird dann der Punkt nicht mehr akzeptiert.
Obwohl ich den Satz (über dem Beispiel aus Deinem Link)
Unlike QString::toDouble(), this function does not fall back to the "C" locale if the string cannot be interpreted in this locale.
so interpretiere, das es mit QString::toDouble noch funktionieren sollte.

Dann muss ich mich wohl ran machen und den ganzen Code durchforsten.

Gruß Alex

Edit: Ach ja, ich benutze die Version 5.4
Antworten