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
QLabel und setText()
QLabel und setText()
- Dateianhänge
-
- main.cpp
- (241 Bytes) 336-mal heruntergeladen
-
- mywindow.cpp
- (820 Bytes) 354-mal heruntergeladen
-
- mywindow.h
- (463 Bytes) 297-mal heruntergeladen
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
??
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
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
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Also, das hier ist deine Funktion:
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.
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");
}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.
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?
Oder ist die Kontrollstruktur dort an der falschen Stelle?
Vielen Dank für eure Hilfe.
Viele Grüße
qtimho
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");
}Vielen Dank für eure Hilfe.
Viele Grüße
qtimho
Hallo,
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
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();
}
}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