QLabel und setText()

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Mido
Beiträge: 18
Registriert: 30. Mai 2008 10:21

QLabel und setText()

Beitrag 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
Dateianhänge
main.cpp
(241 Bytes) 335-mal heruntergeladen
mywindow.cpp
(820 Bytes) 353-mal heruntergeladen
mywindow.h
(463 Bytes) 296-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

'Funktioniert nicht' ist keine Fehlerbeschreibung
Mido
Beiträge: 18
Registriert: 30. Mai 2008 10:21

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

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

'Funktioniert nicht' ist keine Fehlerbeschreibung
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag 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.
qtimho
Beiträge: 9
Registriert: 4. September 2010 21:41

Beitrag 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
kannaum
Beiträge: 73
Registriert: 31. Januar 2010 09:57

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