[gelöst]Deklaration von Items in Schleifen

Alles rund um die Programmierung mit Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst]Deklaration von Items in Schleifen

Beitrag von qtNiko »

hi,

ich möchte in einer Schleife jeweils ein neues Bild einlesen, etwas darüber malen und alles zusammen in einem Label darstellen.
Wenn ich also schreibe:

Code: Alles auswählen

for (i=1; i<maxLoop; i++) {
         QPainter painter(&bild);  // bild wurde außerhalb der Schleife von Datei gelesen
		painter.drawLine(10,10,200,200);  // nur als Beispiel
		painter.end();             // nötig, weil sonst setPixmap() nicht geht
		myLabel->setPixmap(bild);  // anzeigen
}
dann müsste doch bei jedem Schleifendurchlauf ein neues Objekt QPainter erzeugt werden. Dann hätte ich am Ende jede Menge QPainter, die alle gleich heißen, oder nicht?

Zweites Beispiel:
Eine Textdatei soll zeilenweise eingelesen werden. Die Datei file ist geöffnet, und jetzt:

Code: Alles auswählen

QTextStream in(&file);
     while (!in.atEnd()) {
         QString line = in.readLine();
         process_line(line);
     }
Dieses Beispiel stammt aus der Doku. Hier müsste doch ebenfalls für jede Zeile der Datei ein neues Objekt "line" erzeugt werden, oder?
Zuletzt geändert von qtNiko am 2. Dezember 2007 20:52, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wann wolltest du dir nochmal C++-Grundlagen aneignen?
iaby
Beiträge: 53
Registriert: 10. Februar 2007 13:12

Beitrag von iaby »

Beim Verlassen des Gültigkeitsbereichs

Code: Alles auswählen

{
   ...
}
werden die Variablen (wenn sie wie hier auf dem Stack liegen) wieder zerstört. Es gibt also immer nur eine Variable, auf die kannst du dann auch nach der Schleife nicht mehr zugreifen!
ObeliX
Beiträge: 59
Registriert: 14. November 2007 17:47

Beitrag von ObeliX »

.. und dieser gültigkeitsbereich wird bei jedem schleifendurchlauf verlassen und dann der ganze anweisungsblock ggf. erneut ausgeführt.


MfG Obel
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

danke,

der Hinweis auf den Gültigkeitsbereich {..} ist sehr viel hilfreicher, als die Frage nach C++ Grundkenntnissen.
Ich war davon ausgegangen, dass der Gültigkeitsbereich die komplette function ist.
Nun, ich habe wieder etwas dazugelernt, vor allem auch im Hinblick auf Zeitoptimierungen. Denn wenn in einer langen Schleife viele solche Variablen/Objekte immer wieder erzeugt und gelöscht werden, dann kann sich dies ganz schön im Zeitverhalten auswirken.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Antworten