Seite 1 von 1
[gelöst] Wo QWidgetTableItems verwalten?
Verfasst: 26. September 2005 23:03
von klogg
Ich habe QStrings, von denen je 4 zusammengehören.
Die will ich jetzt zeilenweise anzeigen.
Dazu nutze ich QTableWidget und QTableWidgetItems, oder?
Soll ich die Items selbst in einer z.B. QList verwalten,
oder macht das das QTableWidget?
Ist mir irgendwie nicht klar...
Und wenn ich QTableWidget::clear() aufrufe,
löscht er dann nur seine Kopien der Adresse oder die Objekte?
HENNING
Verfasst: 26. September 2005 23:58
von klogg
Ich probiere es gerade so:
In einer QList verwalte ich die Adresse der Items
Code: Alles auswählen
list << new QTableWidgetItem(lineEdit_1->text());
list << new QTableWidgetItem(lineEdit_2->text());
list << new QTableWidgetItem(lineEdit_3->text());
list << new QTableWidgetItem(lineEdit_4->text());
später dann...
(immer wenn die Tabelle aktualisiert werden soll)
Code: Alles auswählen
for (int row = 0; row < list.size() / 4; ++row)
{
for (int column = 0; column < 4; ++column)
{
tableWidget->setItem(row, column, list[row * 4 + column]);
}
}
Wenn ich vor die Schleifen ein tableWidget->clear() setze,
stürzt er beim wiederholten Aufruf der Schleifen ab.
Kann es also sein, dass er durch das clear() den Speicher freigibt?
Mir ist nicht klar, was er mit den Adressen der Items eigentlich macht
HENNING
Verfasst: 28. September 2005 10:50
von klogg
Ich würde gerne noch einmal etwas Aufmerksamkeit auf meine Frage lenken...
Was passiert mit den Items in einem QWidgetTable,
wenn ich QWidgetTable::clear() aufrufe?
Stimmt es, dass der Table die Items selbst verwaltet
und sich daher darum kümmert, dass deren Speicherplatz freigegeben wird?
Ich hab mit das mittels der Doku nicht erklären können
HENNING
Verfasst: 28. September 2005 11:15
von FlorianBecker
Ich nehme an, dass diese gelöscht werden. Aber deswegen liefert Trolltech ja auch noch den Source mit um ganz sicher zu sein. Guck dir doch einfach mal die nötigen Passagen an.
Verfasst: 3. Oktober 2005 23:37
von klogg
Ich wollte diesen Thread gerne noch beenden
Für alle, die es interessiert:
Es ist tatsächlich so, dass beim Aufruf von QTableWidget::clear()
alle Items gelöscht werden.
Auch wenn bei setItem(...) schon ein Item an der gewünschten Stelle
vorhanden ist, wird dieses gelöscht.
Der Table kümmert sich also komplett um die übergebenen Adressen.
Quelle: qtablewidget.cpp (QT 4.0.1)
HENNING