[Qt]Text aus QLineEdit auslsesen und in integer konvertieren
-
Ok hab selber die Lösung gefunden. Ist zwar mit double aber das ist ja egal
Wen's interessiert: http://de.wikibooks.org/wiki/Qt_f%C3%BCr_C%2B%2B_Anf%C3%A4nger:_Die_erste_Version#Auslesen_der_Felder
-
R3DL10N schrieb:
Ok hab selber die Lösung gefunden. Ist zwar mit double aber das ist ja egal
Wie meinst du das? int ist was anderes als double. Es gibt auch ein "toInt()", genauso "toLong"() usw.
nein ich habe mich bereits für QLineEdit entschieden
Das ist aber eine ziemlich kurzschlüssige und unflexible Handlungsweise. Nur weil man QLineEdit als Eingabefeld gefunden hat, dabei bleiben zu wollen.
QSpinBox schaut (bis auf die Pfeile) genauso aus, du kannst Limits eingeben, vor allem kannst du verhindern, dass der eingegebene Wert größer MAX_INT wird, was mit reinem Text nicht geht, du hast einen Validator, der nur Zahlen zulässt, und vor allem sind SIGNALS und SLOTS direkt auf int ausgelegt, was enorme Vorteile bringt, da du nicht selber SIGNALS/SLOTS wrappen musst um mit int zu funktionieren...
Gilt übrigens auch für QDoubleSpinBox, die auf Fließkommazahlen (double) ausgelegt ist.
-
l'abra d'or schrieb:
Wie meinst du das? int ist was anderes als double. Es gibt auch ein "toInt()", genauso "toLong"() usw.
Gerade darum ist es egal, ob das Tut nun für Double ist oder nicht, wenns ein toDouble() gibt, gibts auch ein toInt()
l'abra d'or schrieb:
Das ist aber eine ziemlich kurzschlüssige und unflexible Handlungsweise. Nur weil man QLineEdit als Eingabefeld gefunden hat, dabei bleiben zu wollen.
Ok ich werds mir nocheinmal genauer anschauen
-
Ja sieht garnichtmal schlecht aus mit
ui->spinBox->setMaximum(1555); ui->spinBox->setMinimum(1);
Ich denke, ich werde dann doch die spinBox verfendenDanke!
-
Ich habe jetzt aber das Problem, dass ich in einer for - Schleife einen Eintrag in ein QListWidget "adden" möchte. Dazu habe ich folgenden Code geschrieben:
void Widget::simuliere() { int start = 0; int kopf = 0; int zahl = 0; int eingabe = ui->spinBox->text().toInt(); for (start = 0; start < eingabe; ++start){ int zMuenze = rand() % 2 + 1; if (zMuenze == 1){ ui->listWidget->addItem(QListWidgetItem *kopfItem("Kopf")); kopf += 1; } if (zMuenze == 2){ ui->listWidget->addItem(QListWidgetItem *zahlItem("Zahl")); zahl += 1; } } if (start == eingabe){ ui->listWidget->addItem(QListWidgetItem *kopfErgebnisItem(QString *kopfErgebnis = kopf.toString())); ui->listWidget->addItem(QListWidgetItem *zahlErgebnisItem(QString *zahlErgebnis = zahl.toString())); } }
Aber wenn ich das Compilieren will, kommen tausende von Build-Fehleren.
Das Problem liegt anscheinend bei der "addItem" - Funktion...
-
kopf und zahl sind Integer. Diese sind eingebaute Typen, keine Klassen. Deshalb gibt es auch keine Funktion "int::toString()".
Du willst entweder QString::arg() oder QString::number(). Schau erst in die Doku, wie man das anewndet, bevor du wieder postest.Kann es sein dass du noch ordentlich Lücken in deinen C++-Grundlagen hast? Lernst du C++ direkt mit Qt? Denn eigentlich dürfte der Versuch mit dem zahl.toString() gar nie nicht auftreten...
-
l'abra d'or schrieb:
Lernst du C++ direkt mit Qt?
Nein. Ich bin komplett neu in Qt, hab bisher in C++ nur Konsolenanwendungen programmiert. Ich habe vorher C# programmiert und da konnte man so von string zu int konvertieren:
int eingabe = int.parse(textBox1.Text);
irgendwie versuche ich das prinzip immer auf andere sprachen abzuleiten
-
[quote="R3DL10N"]Hallo!
Wie kann ich den Text aus einer QLineEdit auslesen und den Inhalt, der
ja standardmäßig String sein sollte, in eine integer variable packen?
am besten wäre es noch, wenn ich alle Buchstaben & Sonderzeichen blockieren könnte, sodass nur Zahlen in das QLineEdit - Feld eingetragen werden können.
Wie kann man das realisieren?[/quote]lineEdit.text().toInt()
-
Hallo, ich bins nochmal!
Ich habe es ja geschafft, den Inhalt einer TextBox, SpinBox etc. auszulesen.
Jetzt will ich aber einen int Wert wieder ausgeben!Ich dachte mir, das müsste mit QString gehen, also habe ich mal in die Doku geschaut: http://doc.qt.nokia.com/4.6/qstring.html
Dort steht aber nicht wie das geht
Also habe ich mir gedacht: Ich versuche mal das zuvor gelernte darauf zu beziehen:QString myString(variable);
Geht nicht!
QString my String = new QString(variable);
Geht auch nicht!
Was kann ich tun???
-
Ein Blick zu den "Static Public Members" von QString könnte nicht schaden
Ich denke du meinst mit "ausgeben" nur "den Wert im LineEdit setzen". Bei QSpinBox sollte das ja problemlos mit setValue(int) gehen.
-
Das mit setValue hat mir schon sehr geholfen. Ich habe das mit QString jetzt anders gelöst und zwar so:
QString string = ui->lineEdit->text();