Zuse1
Ensign
- Registriert
- Juni 2018
- Beiträge
- 246
Tag zusammen,
ich habe einen kleinen Code geschrieben, der ein Label mehrmals von oben nach unten wandern lassen soll.
Zuerst habe ich es versucht indem ich das Label per Code erzeuge und dann mittels Schleife wandern lasse. Leider funktioniert das nicht.
Nach einigem rumprobieren habe ich es geschafft, mit fast dem gleichen Code das Label wandern zu lassen. Der einzige unterschied ist jedoch, dass ich das Label mit dem Qt Designer erstellt habe und nicht im Code. Nun frage ich mich, wieso funktioniert die Variante 2, aber die Variante 1 nicht?
Hier einmal der nicht funktionirende Code (Variante 1):
Und hier der funktionierende Code (Variante 2):
Vielleicht kann mir jemand erklären warum die Variante 2 funktioniert und die Variante 1 nicht. Vielen Dank
ich habe einen kleinen Code geschrieben, der ein Label mehrmals von oben nach unten wandern lassen soll.
Zuerst habe ich es versucht indem ich das Label per Code erzeuge und dann mittels Schleife wandern lasse. Leider funktioniert das nicht.
Nach einigem rumprobieren habe ich es geschafft, mit fast dem gleichen Code das Label wandern zu lassen. Der einzige unterschied ist jedoch, dass ich das Label mit dem Qt Designer erstellt habe und nicht im Code. Nun frage ich mich, wieso funktioniert die Variante 2, aber die Variante 1 nicht?
Hier einmal der nicht funktionirende Code (Variante 1):
C++:
QLabel *lbl = new QLabel(this);
lbl->setText("Hallo");
lbl->setGeometry(20, 10, 30, 10);
//zählt die Runden und gibt sie aus (nur zu Testzwecken)
QLabel *lblRunden = new QLabel(this);
lblRunden->setGeometry(60, 20, 30, 10);
lblRunden->setText("");
int hoehe = 0;
int runden = 0;
int hoeheForm = this->size().height();
while(runden < 10)
{
if(hoehe < hoeheForm)
{
lbl->setGeometry(20, hoehe, 30, 10);
hoehe++;
repaint();
}
else
{
hoehe = 0;
repaint();
runden++;
lblRunden->setNum(runden); //zu Testzwecken
}
}
Und hier der funktionierende Code (Variante 2):
C++:
int hoehe = 0;
int runden = 0;
int hoeheForm = this->size().height();
while(runden < 10)
{
if(hoehe < hoeheForm)
{
ui->label->setGeometry(20, hoehe, 30, 10);
hoehe++;
repaint();
}
else
{
hoehe = 0;
repaint();
runden++;
}
}
Vielleicht kann mir jemand erklären warum die Variante 2 funktioniert und die Variante 1 nicht. Vielen Dank