Seite 1 von 1
QLabel und setText()
Verfasst: 13. Februar 2010 19:42
von Mido
Hallo ,
ich hab ein klein Problem und zwar :
ich hab ein Qt Applikation als Beispiel programmiert , eine Taste und ein Label ,
sollte die Taste gedrückt werden ----> scheint ein klein Text auf dem Label
mit dem Wiederholungszahl und daneben ein String: ".mal gedrückt".also
ungefähr so :
1. mal gedrückt
2. mal gedrückt
3. mal gedrückt
...........
ich bekomme entweder die Zahlen(Schleife) oder den String
code : im Anhang
Danke
Verfasst: 13. Februar 2010 19:51
von Christian81
Wenn Du setText() einmal mit der Zahl und danach gleich mit dem String aufrust - was erwartest Du? Man sollte schon beides zusammen übergeben.
Verfasst: 13. Februar 2010 21:49
von Mido
ja Christian setText() nehmt nur ein String als Argument, und ich brauche Zahl + String
Zahl muss zwar nach jede Tasten clicked() inkrementiert , das ist halt mein Problem !
Verfasst: 13. Februar 2010 21:52
von Christian81
??
Was ist so problematisch zwei Strings zusammenzufügen?
Und wenn man wirklich nicht rausbekommt das man dies einfach mit dem + - operator machen kann gibts auch noch die Doku:
http://doc.trolltech.com/4.6/qstring.html
Verfasst: 13. Februar 2010 22:16
von TSS
Also, das hier ist deine Funktion:
Code: Alles auswählen
void MyWindow::setText() {
QString str1;
str1 =label->text();
int i ;
i =str1.toInt();
i++;
QString str2 = QString(" %1").arg(i) ;
label->setText(str2);
label->setText(".mal gedrueckt");
}
Also:
den String aus dem Label mit str1.toInt() umzuwandeln, wird wohl eher schlecht klappen, da du nicht einfach nur eine Zahl darin stehen hast.
Die einfachste Lösung wäre hier einfach eine Variable zu nehmen und diese bei jedem Klick auf den Button um eins zu erhöhen.
Um eine Zahl in einen String umzuwandeln, kannst du QString::number(zahl) verwenden. Wie man die Strings dann zusammenfügt wurde ja gesagt.
Verfasst: 19. September 2010 16:43
von qtimho
Hallo,
ich möchte mich mit meiner Frage gerne anhängen, da die Antwort mir bei einem ähnlichen Problem schon geholfen hat. Allerdings möchte ich jetzt, dass man nur 5 Mal drücken muss, und danach das Programm zu Ende ist,
Ich denke Mal, dass ich dazu eine If-Abfrage brauche, aber was dann?
Code: Alles auswählen
void MyWindow::setText() {
QString str1;
str1 =label->text();
int i ;
i =str1.toInt();
if (i <=20)
i++;
else // weiter weiß ich nicht
QString str2 = QString(" %1").arg(i) ;
label->setText(str2);
label->setText(".mal gedrueckt");
}
Oder ist die Kontrollstruktur dort an der falschen Stelle?
Vielen Dank für eure Hilfe.
Viele Grüße
qtimho
Verfasst: 19. September 2010 19:43
von kannaum
Hallo,
Code: Alles auswählen
void MyWindow::setText() {
QString str1;
str1 =label->text();
int i ;
i =str1.toInt();
if (i <=5) {
i++;
QString str2 = QString(" %1").arg(i) ;
label->setText(str2);
label->setText(".mal gedrueckt");
} else {
quit();
}
}
Wieso nciht so?
Wenn i kleiner oder gleich 5 ist wird das Label geändert.
Anderenfalls wird das Programm beendet.
In der Theroie sollte es so gehen, bin mir nur nicht sicher ob man dort einfach so das quit() aufrufen kann, aber probiers einfach mal.
mfg