Formatieren Sie eine Zahl in einem bestimmten QString-Format

8

Ich habe eine Frage zum Formatieren einer Dezimalzahl zu einem bestimmten QString-Format. Grundsätzlich habe ich in meinem Programm ein Eingabefeld, das beliebige Werte annehmen kann. Ich möchte, dass der Wert in diesem Feld in das Format "+05.30" übersetzt wird (basierend auf dem Wert). Der Wert wird auf +/- 99,99 begrenzt.

Einige Beispiele umfassen:

.2 - & gt; +00.02

-1.5 - & gt; -01.50

9.9 - & gt; +09.90

Ich denke an einen Konverter wie diesen, aber es wird einige offensichtliche Probleme haben (keine führende 0, kein Vorzeichen +).

%Vor%

Diese Frage hatte einige Ähnlichkeiten, verbindet aber nicht die Vorder- und Hinterkante.

Konvertiert ein int in einen QString mit Nullauffüllung (führende Nullen)

Irgendwelche Ideen, wie Sie dieses Problem angehen können? Deine Hilfe wird geschätzt! Danke!

    
ImGreg 29.08.2011, 19:23
quelle

2 Antworten

18

Ich denke nicht, dass Sie das mit jeder QString-Methode alleine machen können (entweder Nummer oder arg ). Natürlich könnten Sie Nullen und Zeichen manuell hinzufügen, aber ich würde das gute alte Sprintf verwenden:

%Vor%

Bearbeiten: Vereinfachte den Code entsprechend dem Kommentar von alexisdm.

    
user362638 29.08.2011, 20:24
quelle
8

Sie müssen das Zeichen nur manuell hinzufügen:

%Vor%

Bearbeiten : Das Schlimmste ist, dass es tatsächlich eine interne Funktion gibt, QLocalePrivate:doubleToString , die das erzwungene Zeichen und das Padding an beiden Enden gleichzeitig unterstützt, aber nur mit diesen Optionen verwendet wird in QString::sprintf und nicht:

  • QTextStream und sein << -Operator, der das Zeichen zum Anzeigen zwingen kann, aber nicht die Breite oder
  • QString::arg , wodurch die Breite, nicht aber das Vorzeichen erzwungen werden kann.

Aber für QTextStream könnte das ein Fehler sein.

    
alexisdm 29.08.2011 20:40
quelle

Tags und Links