ich habe eine kurze Frage. Und zwar bastele ich mir ein QTreeWidget zusammen. Es funktioniert auch wunderbar. Allerdings erzeuge ich in einer Schleife, wie gleich im Quellcode zu sehen, immer ein new QTreeWidget. In meinem Buch zu Qt und auf den Internetseiten, die ich gefunden habe, wir es genauso gemacht.
Aber wo lösche ich diese Items dann wieder? Entstehen da nicht bei großen Datenmengen riesige Löscher im Speicher?
Ich habe schon ein paar Umwege versucht, mir bool'schen Variablen im Destruktor eine Funktion aufzurufen, die dann wie bei mir "TopLevel und SubLevel" löschen soll. Aber dabei schmiert mein Programm ab.
Ich möchte eigentlich nur gerne wissen, ob so, wie in meinem Code Speicherlecks auftreten oder ob ich mich einfach nur vertue oder etwas übersehen habe.
Vielen Dank für jede Antwort.
Beste Grüße,
Marcus
Code: Alles auswählen
void MainWindow::CreateTreeWidgetItems()
{
//Times ist ein QVector<Qtime>
int Hour, LastHour=0;
QString HourToAppend;
QTreeWidgetItem *TopLevel;
QTreeWidgetItem *SubLevel;
for(int i=0; i<Times.size(); i++)
{
Hour = Times[i].hour();
if(Hour>LastHour)
{
TopLevel = new QTreeWidgetItem(ui->treeWidget);
HourToAppend = QString::number(Hour);
switch( HourToAppend.length() )
{
case 1: HourToAppend.prepend("0");
HourToAppend.append(":00 Uhr");
break;
case 2: HourToAppend.append(":00 Uhr");
break;
}
TopLevel->setText(0, HourToAppend);
SubLevel = new QTreeWidgetItem(TopLevel);
SubLevel->setText(0, Times[i].toString());
LastHour=Hour;
}
else
{
SubLevel = new QTreeWidgetItem(TopLevel);
SubLevel->setText(0, Times[i].toString());
}
}
}