QString in Int umwandeln

Alles rund um die Programmierung mit Qt
Antworten
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

QString in Int umwandeln

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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();
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

Beitrag von RED Squirrel »

also folgendes Funktioniert:

Code: Alles auswählen

aus_text1->setText(ein_text->text());
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

Code: Alles auswählen

zahl = 5;
vor der 2. Zeile eingebe, wird 5 ausgegeben.

Ich glaube, dass habt ihr beide gemeint, oder?

also kann der Fehler eigentlich nur hier liegen:

Code: Alles auswählen

zahl = ein_text->text().toInt();
zahl, ist im header als privat int zahl angegeben.

danke, und lg
RED
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

RED Squirrel hat geschrieben:also folgendes Funktioniert:

Code: Alles auswählen

aus_text1->setText(ein_text->text());
Was 'funktioniert' ?

Code: Alles auswählen

QString str = QString::number(4711);
int number = str.toInt();

qDebug("Zahl ist: %d", number);
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

Beitrag von RED Squirrel »

Code: Alles auswählen

aus_text1->setText(ein_text->text());
Da wird dann der Text, der im QLineEdit: ein_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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

RED Squirrel hat geschrieben:

Code: Alles auswählen

aus_text1->setText(ein_text->text());
Da wird dann der Text, der im QLineEdit: ein_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!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

Beitrag von RED Squirrel »

ich verstehe nicht, was du meinst...

wo wird denn, wenn ich

Code: Alles auswählen

    qDebug("Zahl ist: %d", zahl); 
so eine Debug Anweisung schreibe, das Ergebnis ausgegeben?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RED Squirrel
Beiträge: 50
Registriert: 3. Februar 2007 22:21

Beitrag 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!
Antworten