Seite 1 von 1
QString in Int umwandeln
Verfasst: 8. März 2007 16:09
von RED Squirrel
hi!
ich habe aus der Doku nachgeschaut, wie ich einen QString in eine Int Zahl umwandel:
Code: Alles auswählen
ein_text->setObjectName(QString::fromUtf8("text_ein"));
zahl = ein_text->text().toInt();
ich habe das jetzt in meinem Programm angewendet, aber wenn ich eine Zahl eingebe, bekomme ich immer nur 0 als Int Zahl raus. Was mache ich falsch?
lg. RED
Verfasst: 8. März 2007 16:12
von franzf
Hmmmm warum so umständlich?
Nimm doch gleich
Code: Alles auswählen
int QString::toInt ( bool * ok = 0, int base = 10 ) const
Das sollte funktionieren.
Verfasst: 8. März 2007 16:12
von Christian81
Ich glaube nicht dass in ein_text->text() eine Zahl (als String) steht.
Gib mal den String per qDebug() oder was auch immer aus und schau nach.
Verfasst: 8. März 2007 16:30
von RED Squirrel
bitte nicht böse sein, aber ich verstehe weder den post von franzf, noch sehe ich nicht ganz, wo die Ausgabe von qDebug erscheinen soll.
Bitte habt Nachsicht...
lg. RED
Verfasst: 8. März 2007 16:37
von franzf
RED Squirrel hat geschrieben:bitte nicht böse sein, aber ich verstehe weder den post von franzf, noch sehe ich nicht ganz, wo die Ausgabe von qDebug erscheinen soll.
Code: Alles auswählen
QString zahlenString("500");
int zahlVonString = zahlenString.toInt();
Verfasst: 8. März 2007 16:38
von Christian81
Dann gib es eben in eine MessageBox aus oder wo auch immer. Auf alle Fälle überprüfe ob auch wirklich das in dem String drinsteht was Du denkst.
Verfasst: 8. März 2007 18:10
von RED Squirrel
also folgendes Funktioniert:
aber wenn ich z.B: folgendes mache, bekomme ich immer nur 0 raus:
Code: Alles auswählen
zahl = ein_text->text().toInt();
zahl_string = QString::number(zahl, 10);
aus_text1->setText(zahl_string);
wenn ich jetzt noch
vor der 2. Zeile eingebe, wird 5 ausgegeben.
Ich glaube, dass habt ihr beide gemeint, oder?
also kann der Fehler eigentlich nur hier liegen:
zahl, ist im header als privat int zahl angegeben.
danke, und lg
RED
Verfasst: 8. März 2007 18:17
von Christian81
RED Squirrel hat geschrieben:also folgendes Funktioniert:
Was 'funktioniert' ?
Code: Alles auswählen
QString str = QString::number(4711);
int number = str.toInt();
qDebug("Zahl ist: %d", number);
Verfasst: 8. März 2007 18:34
von RED Squirrel
Da wird dann der Text, der im QLineEdit: e
in_text steht, im QLineEdit:
aus_text1 ausgegeben.
Wenn ich jetzt jedoch noch einen "Zwischenschritt" mache:
Code: Alles auswählen
zahl = ein_text->text().toInt();
zahl_string = QString::number(zahl, 10);
aus_text1->setText(zahl_string);
Wird im QLineEdit:
aus_text1 nur eine 0 angezeigt.
Bei folgendem Code:
Code: Alles auswählen
zahl = ein_text->text().toInt();
zahl = 5;
zahl_string = QString::number(zahl, 10);
aus_text1->setText(zahl_string);
wird eine 5 angezeigt.
lg. RED
Verfasst: 8. März 2007 18:39
von Christian81
RED Squirrel hat geschrieben:
Da wird dann der Text, der im QLineEdit: e
in_text steht, im QLineEdit:
aus_text1 ausgegeben.
Das und der Rest ist klar - nur was steht denn nun da drin?
Schonmal mein Beispiel probiert?
Gib den Text doch endlich mal per fprintf(), qDebug() oder wenn es sein muss über eine QMessageBox aus!
Verfasst: 8. März 2007 18:57
von RED Squirrel
ich verstehe nicht, was du meinst...
wo wird denn, wenn ich
so eine Debug Anweisung schreibe, das Ergebnis ausgegeben?
Verfasst: 8. März 2007 19:01
von Christian81
Verfasst: 8. März 2007 19:22
von RED Squirrel
danke! ich habe gerade das Rätsel gelöst.
ich darf die Zahl natürlich erst dann umwandeln, wenn ich den Button drücke. Ich habe immer den Wert, wenn die .exe datei gerade geöffnet wird, in eine Int Zahl umgewandelt. Klar, dass die dann immer 0 ist.
Vielen dank!