Seite 1 von 1

Wert in TopLevelItem ändern

Verfasst: 16. Oktober 2009 09:26
von toem
Ich muss nochmal ne Frage loswerden.

Ich habe ein QTreeWidget in dem zur Laufzeit Daten hinzugefügt werden. Wie kann ich nun ebenfalls zu Laufzeit auf einzelne TopLevelItems zugreifen und darin einen Wert ändern?

Ich arbeite hierbei bislang nicht mit ModelIndex.

Verfasst: 16. Oktober 2009 09:30
von AuE
Ich wette in der Doku gibts ne Beschreibung zu ner Methode die auf TopLevel Items zugreift via einen ModelIndex oder?

Verfasst: 16. Oktober 2009 10:18
von toem
Ich hatte das bislang so versucht. Ohne diesen ModelIndex. Ich dachte das müsste auch ohne funktionieren.

Code: Alles auswählen

int row = ui->treeWidget_DownLoaded->topLevelItemCount();
    QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget_DownLoaded->topLevelItem(row));
    item->setText(0, "Kotz");
    item->setText(5, "test");
    ui->treeWidget_DownLoaded->setCurrentItem(item, row);
Leider wird aber bei diesem Code nichts im TreeWidget verändert. Ist der Ansatz so total falsch?

Verfasst: 16. Oktober 2009 10:34
von AuE
Dir ist schon klar das du damit ein Item erstellst...

QTreeWidgetItem *item = new QTreeWidgetItem(ui->treeWidget_DownLoaded->topLevelItem(row));

Das brauchst du doch gar nicht....
du brauhst den Index deines Items und dann holst du dir das Item.... was du da gerade machst is nen Item zu erstellen was genauso aus sieht wie das was du bearbeiten willst, es aber gar nicht ist ;-)

Was hälst denn hiervon?
QTreeWidgetItem * QTreeWidget::topLevelItem ( int index ) const

Verfasst: 16. Oktober 2009 10:39
von toem
Mann, ich bin so zugedröhnt mit Grippemitteln, ich kapier heut gar nichts mehr.
Kannst Du mir das bitte noch etwas näher erklären? Ich versuch dann in der Hilfe was zu finden.

Verfasst: 16. Oktober 2009 11:10
von AuE
mit new erzeugst du dir ein neues Item (weiss nicht genau was das in demFall ist was er dir zurückliefert aber ich geh davon aus das es nur eine Kopie ist)
Du brauchst aber das OrginalItem bzw den Ptr darauf.
Den bekommst du mit

Code: Alles auswählen

QTreeWidgetItem * QTreeWidget::topLevelItem ( int index ) const
Index is der den du willst...also welches Item.
Dann hast du den Ptr auf das Item das du bearbeiten möchtest.

also QTreeWidgetItem *item2Change = m_ui->deinTreeWidget->topLevelItem ( int index );
item2Change->setText ( 0, "Bla" );

Verfasst: 16. Oktober 2009 13:38
von toem
super, danke
das klappt hervorragend