Seite 1 von 2

Problem mit QString und float

Verfasst: 16. November 2009 12:58
von Walddruide
Hallo zusammen,
ich habe eine Funktion geschrieben, die als Rückgabewert float hat.
Nun möchte ich den Rückgabewert in einem QLabel anzeigen.
Mit der Funktion setText kann man ja den Text des Labels festlegen.
Aber ich schaffe es einfach nicht den float Wert in einen QString zu bekommen.
Implizietes Konvertiern funktioniert nicht und mit einem normalen C++ StringStream bekomme ich den Wet, falls in einen Standart C++ String, aber nicht in einen QString. Ein QString den ich mit der Funktion fromStdString den normalen C++ String zuweise, ist anschließend leer.

Ich hoffe ihr könnt mir helfen.

Schon 'mal danke im Voraus.

Verfasst: 16. November 2009 14:12
von AuE
Schau dir mal in der Doku vom QString die statischen Methoden an ;-) Da ist was für dich dabei!

Verfasst: 16. November 2009 15:18
von Walddruide
Ich hab jetzt die statische Funktion number gefunden, funktioniert aber immer noch nicht. Der String ist jedes mal leer.

Verfasst: 16. November 2009 16:31
von Christian81
Walddruide hat geschrieben:Ich hab jetzt die statische Funktion number gefunden, funktioniert aber immer noch nicht. Der String ist jedes mal leer.
Dann machst Du was falsch würde ich sagen...

Problem mit QString und float

Verfasst: 16. November 2009 16:52
von sowas
ich vermute mit foalt müsste es genau so gehen wie ich es mit integer gemacht habe.
die Konvertierung macht QString automatisch.

int vvar;
vvar =vvar *1+1; // war ein zähler
QString idnr ="";
idnr.append(QString("%1").arg(vvar));

Verfasst: 16. November 2009 17:12
von AuE
mir schauerts grad ;-)
Ja so geht es aber wenns nur ne Zahl zu String is dann einfach ::number verwenden.

Ohne Code können wir allerdings nur raten wo der Fehler ist.
Ich sag ml Zeile 43

Verfasst: 16. November 2009 17:17
von RavenIV
Schau Dir mal diese Funktionen an:
QString QString::number ( double n, char format = 'g', int precision = 6 ) [static]
QString & QString::setNum ( float n, char format = 'g', int precision = 6 )

Verfasst: 17. November 2009 09:02
von RavenIV
FlowPX2 hat geschrieben: QVariant tmp;
Na klar.
Man kann auch über Hamburg nach Rom fahren.
:shock: :? :shock:

Verfasst: 17. November 2009 09:44
von RavenIV
FlowPX2 hat geschrieben: Sprich irgendwo wird der QVariant schon sein Einsatzgebiet haben :wink:
Und natürlich sollte man sich nach besseren Methoden immer umschauen.
Logisch hat auch QVariant sein Einsatzgebiet.
Aber hier ist bekannt, dass ein float in einen QString umgewandelt werden soll.

Und wie man auch erkennen kann, handelt es sich um einen Qt-Einsteiger.
Diesen sollte man nicht verwirren, indem man ihm unpraktische Konstrukte um die Ohren haut, die zudem nicht mal getestet sind.

Verfasst: 17. November 2009 09:55
von AuE
Was daran so schwer?
Wenn ich eine Zahl habe nehm ich ::number. Warum soll ich mir sinnlos variablen holen um hin und herzu kopieren.

Da ist einfach nur ein Fehler irgendwo!

Code: Alles auswählen

retString = QString::number( static_cast<double>(size /1000000),'g', 4) + " MB";

Verfasst: 17. November 2009 11:04
von russkij
ich sehe natürlich nicht den ganzen code, aber der ausschnitt ist definitiv falsch:

int vvar; --> uninitialisiert
vvar =vvar *1+1; // und uninitialisiert verwenden?

Verfasst: 17. November 2009 11:25
von AuE
Recht hast du-aber klärt das Problem nicht ;-)
Ich meinees steht zwar murks drin aber ein +1 sollte ja im schlimmsten Fall nen überlauf bringen...und da er keine unsigned's hat erklärt mir das auch nicht den effekt

Problem mit QString und float

Verfasst: 17. November 2009 14:00
von sowas
Ich habe diese rege Reaktion nicht erwartet, ich antwortete weil niemand einen Tipp gab.
Mein Beispiel ist ein Teil einer Funktion, und zwar
ich lese eine Textdatei ein,
suche in jeder Zeile nach einer Ziffer
wandele sie in integer um
falls nötig erhöhe den Wert
zum Schluss erstelle ich eine neue Textdatei.
Vll. war das kein guter Vorschlag.

Verfasst: 17. November 2009 14:29
von AuE
war schon ok ;-)

aber du hast recht viel weggelassen was zu spekulation führt-und missverständnissen

Verfasst: 17. November 2009 15:24
von russkij
AuE hat geschrieben:war schon ok ;-)

aber du hast recht viel weggelassen was zu spekulation führt-und missverständnissen
und ich habe auch noch den "sowas" mit dem fragesteller verwechselt :-)